1.循环字符串连接代码
var
a,b,c:Integer;
begin
for a:=0 to 10 do
e.Text:=e.Text+inttostr(a);
end;
2.添加到列表指令
listbox1.Items.add(edit1.Text);
3.自定义function
procedure TForm1.Button1Click(Sender: TObject);
var
t:string;
begin
t:=inputbox('输入数字','请输入a、b 、c' ,'a');
edit1.Text:='你输入的是:' + t;
edit2.Text:=func(t);
end;
function func(m:string):string;
begin
if m='a' then
begin
Result:='你应该输入a';
end else
if m='b' then
begin
Result:='你应该输入b';
end else
begin
Result:='你应该输入c';
end;
end;
需要在公共变量区域下定义
function func(m:string):string;
3.每隔3秒做一件事情,需要一个timer控件,设置interval=3000,然后 enabled:=false
按下按扭,则将timer1.enabled:=true;
则在按下的同时,就会自动每隔3秒重复做一件事情
procedure TForm1.Timer1Timer(Sender: TObject);
begin
edit1.Text:='a';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
timer1.Enabled:=true;
end;
4.连接某个地址 存在假死可能
procedure TForm1.Button1Click(Sender: TObject);
var
mystr:string;
url:string;
begin
IdAntiFreeze1.OnlyWhenIdle:=False;
try
url:=edit2.text;
mystr:=idhttp1.Get(url);
except
showmessage('error!');
exit;
end;
showmessage(mystr);
end;
5.多线程研究
Application.ProcessMessages; 用在比较费时的循环中,会检查并先处理消息队列中的其他消息。
用的不多,在拖动的过程中,循环会暂停。
A:多线程第一个例子。
function MyFun(p:Pointer):integer;stdcall;
procedure TForm1.Button1Click(Sender: TObject);
var
ID:THandle;
begin
CreateThread(nil,0,@MyFun,nil,0,ID);
end;
function MyFun(p:Pointer):integer;stdcall;
var
i:integer;
begin
for i:=0 to 500000 do
begin
form1.Canvas.lock;
form1.Canvas.TextOut(10,10,inttostr(i));
form1.Canvas.Unlock;
end;
Result:=0;
end;
B:多线程第2个例子
TMyThread=class(TThread)
Protected
procedure Execute;override;
end ;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TMYThread.Execute;
var
i:integer;
begin
FreeOnTerminate:=true; //线程执行完毕后随即释放
for i:=0 to 500000 do
begin
form1.Canvas.Lock;
Form1.Canvas.TextOut(10,10,inttostr(i));
form1.Canvas.Unlock;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
TmyThread.Create(false); //创建线程
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ExitThread(0); //退出线程
end;
C:CreateThread 记录
function CreateThread(
lpThreadAttributes: Pointer; {安全设置}
dwStackSize: DWORD; {堆栈大小}
lpStartAddress: TFNThreadStartRoutine; {入口函数}
lpParameter: Pointer; {函数参数}
dwCreationFlags: DWORD; {启动选项}
var lpThreadId: DWORD {输出线程 ID}
): THandle; stdcall; {返回线程句柄}
6.delphi 字符串数组分割
type
userarray:array of string;
字符类,如果包含有中文。将pos 换成 ansipos即可
function split(s:string;dot:char):userarray;
var
str:userarray;
i,j:integer;
begin
i:=1;
j:=0;
setlength(str,255);
while Pos(dot,s)>0 do
begin
str[j]:=copy(s,i,pos(dot,s)-i);
i:=pos(dot,s)+1;
s[i-1]:=chr(ord(dot)+1);
j:=j+1;
end;
str[j]:=copy(s,i,strlen(pchar(s))-i+1);
result:=str;
end;
7.delphi 获取当前时间
var
dt:TdateTime;
begin
dt:=Time();
button1.caption:=timetostr(dt);
end;
8:delphi 获取自身窗口标题
var
p: PChar;
begin
p := StrAlloc(256);
GetWindowText(Handle, p, StrBufSize(p));
ShowMessage(p); {Form1}
StrDispose(p);
end;
9://获取 WINDOWS 所在目录
var
buf: array[0..MAX_PATH] of Char;
begin
GetWindowsDirectory(buf, Length(buf));
ShowMessage(buf); {C:\WINDOWS}
end;
10://获取系统目录
var
p: PChar;
begin
p := PChar(StringOfChar(Char(0), 256)); {反复一个空字符 256 次成一个字符串, 然后转为
PChar}
GetSystemDirectory(p, StrBufSize(p));
ShowMessage(p); {C:\WINDOWS\system32}
end;
11://设置窗口标题
var
p: PChar;
begin
p := '窗口新标题';
SetWindowText(Handle, p);
end;
12.delphi与mssql 数据库的datetime 数据类型
将delphi 的Tdatetime 类型 datetimetostr(dt) 后可以插入 mssql 的DateTime 列
connQueryt.Close;
connQueryt.Sql.add('insert into tester(dts) values ('''+datetimetostr(dtp3)+''')');
connQueryt.execSQL;