function ReadEmpNo(Port, BaudRate: Integer; EmpNo: array of byte): Integer; stdcall; external 'Reader.dll';type
TMyThread = class(TThread)
protected
procedure Execute; override;
end;procedure TMyThread.Execute;
var
i: Integer;
EmpNo: array[0..10] of byte;
strNo: string;
begin
FreeOnTerminate := True; {这可以让线程执行完毕后随即释放}
try
// while (true) do
begin
strNo := '';
if ReadEmpNo(StrToInt('1') - 1, 19200, EmpNo) = 0 then
begin
//ShowMessage(Trim(PChar(@EmpNo)));
strNo := Trim(PChar(@EmpNo)); end;
FormC_input.edt_no.Text := '22222';//strNo; sleep(3000);
end; finally
// variable.Free;
end;
end;
问题出在红色部分,就是这个FORM上的控件无法把值弄上去..但这段代码我另外用D7写个程序可以出来的..
FormC_input.edt_no.Text := '22222';//strNo;
给Form添加一个procedure,然后再线程中用Synchronize同步到主线程中执行,在这个Procedure中,修改VCL的值