全局字符串变量的问题

沉醉西亭 2008-11-01 12:36:29
我在公用unit中定义了一个string类型变量str,声明如下:

var
str:String;

在主窗体F_main中showmodal一个查找窗体F_search,打开代码是:

F_search := TF_search.create(self);
if F_xfgl_search.ShowModal = mrok then
begin
showMessage(str);//-----------显示为空白?为什么
edn;

在F_search中点"确定"按钮给str赋值,后返回mrok:

str := '11111';
showmessage(str);//-------------显示为11111
ModalResult := mrok;


问题:为什么返回主窗体后str为空字符串?各个单元该use都use了.
...全文
116 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
沉醉西亭 2008-11-03
  • 打赏
  • 举报
回复
原来我这里的代码没有问题,是其它地方.揭贴
沉醉西亭 2008-11-03
  • 打赏
  • 举报
回复
打错了,f_xfgl_search改成F_search
fangsp 2008-11-01
  • 打赏
  • 举报
回复
也就是把ModalResult := mrok;
放到str := '11111'; 的前面去
fangsp 2008-11-01
  • 打赏
  • 举报
回复
你的逻辑错了
你这样改一下
ModalResult := mrok;

str := '11111';
showmessage(str);//-------------显示为11111

你试试 应该可以的
lake_cx 2008-11-01
  • 打赏
  • 举报
回复
这种数据传递根本没必要用全局变量。。。
自己弄个方法封装下ShowModal就行了。
TF_xfgl_search.ShowDialog(var Str: string): Integer;
begin
Str := '11111';
Result := ShowModal;
end;
调用就这样:
F_search := TF_search.create(self);
if F_xfgl_search.ShowDialog(str) = mrok then
begin
showMessage(str);
end;
szuzsq 2008-11-01
  • 打赏
  • 举报
回复
设几个断点
看看程序
str := '11111';

showMessage(str);
这2句哪个先跑
没赋值就show,当然为空了
mygodsos 2008-11-01
  • 打赏
  • 举报
回复
你的逻辑有点乱

在F_search中点"确定"按钮给str赋值,后返回mrok:
但F_search := TF_search.create(self);
if F_xfgl_search.ShowModal = mrok then

这时候F_search才刚创建,你都没来得及按F_search中点"确定"按钮,
给str赋值1111,就要求返回str的值,那肯定是空值。
jadeluo 2008-11-01
  • 打赏
  • 举报
回复
检查在F_search中是否也申明了名为str的变量,删掉它。

16,742

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧