procedure TForm7.Button7Click(Sender: TObject);
var
hthread:thandle;
threadid:dword;
begin
hthread:=createthread(nil,0,@rasdial1,nil,0,threadid);
end;
其中rasdial1为一个函数。编译时报错第4个参数不能为空。
谁能帮我解释createthread函数。
var
hthread:thandle;
threadid:dword;
begin
hthread:=createthread(nil,0,@rasdial1,nil,0,threadid);
end;
其中rasdial1为一个函数。编译时报错第4个参数不能为空。
谁能帮我解释createthread函数。
DWORD dwStackSize, // initial thread stack size, in bytes
LPTHREAD_START_ROUTINE lpStartAddress, // pointer to thread function
LPVOID lpParameter, // argument for new thread
DWORD dwCreationFlags, // creation flags
LPDWORD lpThreadId // pointer to returned thread identifier
);用0代替nil
线程函数function rasdiall(Parameter: Pointer): Integer; stdcall;其中第四个参数要传递到Parameter。
procedure TForm7.Button7Click(Sender: TObject);
var
hthread:thandle;
threadid:dword;
Param: Integer;
begin
hthread:=createthread(nil,0,@rasdial1,@Param,0,@threadid);
end;
procedure TForm7.Button7Click(Sender: TObject);
var
hthread:thandle;
threadid:dword;
Param: ^Integer;
begin
hthread:=createthread(nil,0,@rasdial1,Param,0,threadid);
end;
var
hthread:thandle;
threadid:dword;
放在外部声明看看,也就是全局声明
//////
type TCpa=RECORD
Cb_p,Cb_n:TComboBox;
end;//////function Faddress(var cpa:TCpa):dword;stdcall;
begin
try
address.Filter:='';
address.Filtered:=false;
address.First;
if cpa.cb_p=cpa.cb_n then begin
cpa.Cb_p.Items.Clear;
while not address.Eof do begin
cpa.cb_p.Items.Add(address.FieldByname('c'+copy(cpa.Cb_p.Name,2,length(cpa.Cb_p.Name))).AsString);
address.Next;
end;
end
else begin
cpa.cb_n.Items.Clear;
address.Filter:='c'+copy(cpa.Cb_p.Name,2,length(cpa.Cb_p.Name))+'='''+cpa.Cb_p.Text+'''';
address.Filtered:=true;
while not address.Eof do begin
cpa.cb_n.Items.Add(address.FieldByname('c'+copy(cpa.Cb_n.Name,2,length(cpa.Cb_n.Name))).AsString);
address.Next;
end;
end;
except
end;
result:=0;
end;