解决方案 »
- 大家帮忙看看,function TObject.GetInterface(const IID: TGUID; out Obj): Boolean;中的out obj怎么解释?(在线)
- 菜鸟提问:帮我看看这个需求!!
- 使用 gexperts 的朋友看过来!
- 高分请教
- 请问如何判断一个数是整数???
- 在delphi中,我要使 被shellexecute所调用的exe文件执行完后 ,我的主程序才执行后面的代码,我应该怎样做??
- 实时录音&实时MP3压缩组件源码发布!
- 用shellexecute怎么打开局域网上另一台pc上的文件?用其他方法怎么实现?
- 各位帮忙!!用spcomm控件编写串口通讯程序,当向串口发送数据时,下面格式如何发送+spcomm大讨论!
- Richedit 究竟支持多少字符???
- 关于报表
- 三层 除了用clientdataset,如何返回一个数据集
用waitfor什么的,主线程也死了,多线程也没有意义了,请大家指点
s:string;
protected
procedure ShowResult;
-----------------------------------
procedure ShowResult;
begin
Form1.Edit1.text:=S;
end;procedure dd.Execute;
var
i:Integer;
begin
for I:=0 to 40000 do
begin
s:=s+'ss';
end;
synchronize(ShowResult);
end;试一下上边的代码,看行不行!
把保存源码的变量放在线程类的
Private内
比如TGetcode=class(TThread)private
GetCode:string;
Protected
procedure ExeCute;Override;end;手打的,测试一下吧!
s:string;
protected
procedure ShowResult;
-----------------------------------
procedure ShowResult;
begin
Form1.Edit1.text:=S;
end;procedure dd.Execute;
var
i:Integer;
begin
for I:=0 to 40000 do
begin
s:=s+'ss';
end;
synchronize(ShowResult);
end;
不还是这个变量的结果嘛?
结果就存在s变量里了!
可以不用Edit显示出来啊!
再用的时候.直接调用s这个变量就行了!
你说的我有些听不懂咯~~~
var
s:string;
add:dd;
begin
add:=dd.Create(False);;;而用Result:=add.s;这样的代码显然是得不到值的
end;
嗯.是的.这样得不到!我想,可以将保存结果的变量设置为全局变量,最后在线程中将这个变量赋值,此处要考虑同步问题然后在这个函数的add:=dd.Create(False);下边,使用add.waitfor;等待线程结束结束后,将Result:=s;(s也就是线程中最后得到的值!)这样应该可以.你试下吧,说的可能不太清楚!
//CExit var 出来的result你自己BeginThread,写线程函数的就好定义result值了