社区
Delphi
帖子详情
delphi 中有点怪的东西...
boytomato
2003-11-04 03:11:34
全局变量
比如在 form1中的 public 或interface 下定义一个全局变量.
form1 中已对它定义.
form2 中调用去老是空值;
...全文
18
12
打赏
收藏
delphi 中有点怪的东西...
全局变量 比如在 form1中的 public 或interface 下定义一个全局变量. form1 中已对它定义. form2 中调用去老是空值;
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
99guo
2003-11-05
打赏
举报
回复
你想要每次改变就把代码写在Formshow里
unit2中TForm2.Formshow的写为
procedure TForm2.Formshow(Sender: TObject);
begin
edit1.Text:=form1.edit1.text;
end;
vavyboyleon
2003-11-04
打赏
举报
回复
全局变量是相对概念,Unit1和Unit2在关系层次上是水平的,就算你Use了其他Unit也是一样的,除非你在程序中又在Unit1和Unit2外面定义的S
你定义的S就相当于(打个比方)是类UNIT1中的一个成员变量,正常情况下因该是一种私有的变量,而通过Use了以后,就相当于友元的样子,不知你懂了没有。
那个S根本就不能叫全局变量
boytomato
2003-11-04
打赏
举报
回复
那你们没有人用过全局变量
form1 中附值.
from2 中调用.
vavyboyleon
2003-11-04
打赏
举报
回复
另外一个,按你的意思(我推测),Uint2中里的TForm2.FormCreate里应该是
edit1.Text:=Unit2.s;
或者写成 99guo(风吹叶)说的那样也行
vavyboyleon
2003-11-04
打赏
举报
回复
对,同意楼上的,循环引用是相当危险的,也可能就是你问题产生的原因
在Unit2里已经USE了unit1,就不要在Unit1里面再USE unit2
liaoqingpeng
2003-11-04
打赏
举报
回复
你这段代码还有一个问题:那就是循环引用
angelface
2003-11-04
打赏
举报
回复
好像是不行, 99guo的方法也不行, 99guo的方法只适合窗体第一次创建时有用,
把form1.edit1.text改变一下, 在试试, 就不好用了, 期待答案
99guo
2003-11-04
打赏
举报
回复
???为什么要这样!
unit2中TForm2.FormCreate的直接写为
procedure TForm2.FormCreate(Sender: TObject);
begin
edit1.Text:=form1.edit1.text;
end;
就好了,不必再定义一个s变量
zzzzzzzzzzzzz
2003-11-04
打赏
举报
回复
我试了可以啊
和你的代码一样。
boytomato
2003-11-04
打赏
举报
回复
有人吗....
boytomato
2003-11-04
打赏
举报
回复
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,dateutils, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
s:string;
implementation
uses unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
s:=edit1.text;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
form2.show;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses unit1;
{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject);
begin
edit1.Text:=s;
end;
end.
aiirii
2003-11-04
打赏
举报
回复
定義還要赋值啊, 要麼就是你的代碼還有問題!!
Delphi
第三方控件使用大全2 (完整光盘)
就是刘艺的那本书,很久以前买的了,花了我¥98,苦。。。。最近回家后网络有所改善,把配套光盘传上来了,当然很多
东西
都老了。。。斑竹加:本资源已获刘艺老师授权发布(www.liu-yi.net)
Oracle数据库导入导出工具
我的
delphi
处女作. 只是个shell没什么技术含量的
东西
,牛人就当路过.
039_《
Delphi
6.Kylix2.SOAP.Web Service程序设计篇》
本书是专门讨论
Delphi
6
中
SOAP/Web Service新技术的使用书籍。主要内容包括:SOAP/Web Service技术介绍、SOAP功能规范、各种SOAP/Web Service应用技术和架构的讨论、结合数据库的SOAP/Web Service应用系统的开发等等。 本书内容深入浅出,实用性强,是一本SOAP/Web Service技术的完整指南。本书所附光盘包括书
中
的所有示例代码。本书
中
文简体字版由李维通过北京宝兰-英博思信息技术有限公司授权机械工业出版社在
中
国大陆境内独家出版发行,未经出版者
Delphi
并行库System.Threading 之ITask 1
不知什么时候,也许是XE8,也许是XE8之前 .
Delphi
里面多了个System.Threading的并行库. 虽然己经有非常棒的第三方并行库QWorker,但我还是更喜欢官方的
东西
. 下面是一段使用System.Threading
中
ITask的代码 procedure TForm3.SpeedButton1Click(Sender: TObject); var tasks...
Delphi
的异步方法TTask.Run
上述代码里面:TThread.Synchronize 是同步,对 Run 里面的执行在线程里面的代码,做一个和主线程的同步。这里所谓的“同步”,是指 TThread.Synchronize 里面的代码,是丢给主线程去执行的,并且要等到主线程执行完里面的代码,TThread.Synchronize 才结束返回。这样的代码写法,有一定的好处。
有点
类似之前有些第三方控件封装的线程对象,一个 Run 事件里面,放需要线程执行的代码。换句话说,如果 Run 的括号里的方法要执行完,Run 才返回,是同步方法。
Delphi
5,391
社区成员
262,736
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章