DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: sprblck
今日帖子: 14
在线用户: 15
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 xiangsong (天下第一菜) ★☆☆☆☆ -
盒子活跃会员
2003/9/3 11:06:59
标题:
打开窗口时遇到的问题 浏览:3386
加入我的收藏
楼主: 我在一个子窗口内的按钮的click事件里写这样的语句:
 application.CreateForm(Tf_seed_add,f_seed_buy_add);
 f_seed_add.showmodal;
不知道为什么,不打开这个窗口,程序能正常退出,如果打开过,主窗口关闭时会出错,出现我的附件中显示的这样的错误信息。为什么?
另:不知如何往贴子里贴图,还请指教。

----------------------------------------------
天下第一菜

那一天我在街头踯躅
你在秋天里独自跳舞
回首落满悲欢的来时路
那覆水难收的赌注
我们用青春一起作证
我们曾遇见到幸福
作者:
男 redsworft (牛肉干) ★☆☆☆☆ -
盒子活跃会员
2003/9/3 11:10:11
1楼: 你是不是没有写Destroy事件啊
----------------------------------------------
哇靠 ~~~~~~~~~~~~~~
这个帖子一定要回!
作者:
男 xiangsong (天下第一菜) ★☆☆☆☆ -
盒子活跃会员
2003/9/3 11:31:52
2楼: 咦,我的附件那儿去了?
谢谢redsworft 。
我试过在f_seed_add的destroy事件里写入f_seed_add.free这样写,出错信息是stcak overflow。
不写,出现类似汇编语言的窗口。这是怎么回事?
我极菜,还请指点。
另外,这个窗口里的几个Query组件的语句如果注掉,以上情况不发生,可是我怎么也看不出这几个query组件的语句有什么错呀。
----------------------------------------------
天下第一菜

那一天我在街头踯躅
你在秋天里独自跳舞
回首落满悲欢的来时路
那覆水难收的赌注
我们用青春一起作证
我们曾遇见到幸福
作者:
男 sealcheng (chengcheng) ★☆☆☆☆ -
普通会员
2003/9/3 11:38:39
3楼: 试试 加一个 action:=cafree;在关闭的时候.我也是菜鸟
----------------------------------------------
-
作者:
男 wwj213 (ghost) ★☆☆☆☆ -
普通会员
2003/9/3 13:55:10
4楼: 你把application.CreateForm(Tf_seed_add,f_seed_buy_add);改成
application.Create(Tf_seed_add,f_seed_buy_add);应该就没有问题了
因为createform所创建的窗口是主窗口
----------------------------------------------
-
作者:
男 xiangsong (天下第一菜) ★☆☆☆☆ -
盒子活跃会员
2003/9/3 14:42:46
5楼: to sealcheng
不行呀,依然出现现那个汇编窗口。
to wwj213
也不行呀,改成create根本就编译不过去。
我想肯定是这里边的有关query组件的一些语句的问题,我再试试。
比如:
with query_seed_name do
  begin
    databasename := datamodule1.Database1.DatabaseName;
    close;
    sql.Clear;
    str_sql := 'select id,name,seed_type from seed_name where flag = 'a'';
    sql.Add(str_sql);
    open;
    first;
    while not eof do
    begin
      cb_name.Items.Add(fieldbyname('name').AsString);
      next;
    end;
  end;
注了上述语句后,打开过这个窗口后,关闭主窗口就不会出错了。这是怎么回事?
谢谢几位的解答。
----------------------------------------------
天下第一菜

那一天我在街头踯躅
你在秋天里独自跳舞
回首落满悲欢的来时路
那覆水难收的赌注
我们用青春一起作证
我们曾遇见到幸福
作者:
男 skertone (奇奇怪) ★☆☆☆☆ -
盒子活跃会员
2003/9/3 15:28:38
6楼: 你这个 datamodule1 是不是在创建这个窗口之前创建了?

如果没有的的话 肯定会。。。。。。。

哪个“类似汇编语言” 是 CPU 状态调试窗口


----------------------------------------------
按此在新窗口浏览图片 按此在新窗口浏览图片 按此在新窗口浏览图片
作者:
男 xiangsong (天下第一菜) ★☆☆☆☆ -
盒子活跃会员
2003/9/3 15:36:52
7楼: 谢谢奇奇怪的解答,这个datamodule1当然是在这之前创建了,要不怎么编译得过。
我感觉最奇怪的是主窗口的关闭居然和它子窗口打开的一个normal窗口内的几个有关Query组件的语句有关。真是怪事,那位大虾遇见过这种问题,还请帮忙,我的活很急,可是卡到这里了,真急死我了。
----------------------------------------------
天下第一菜

那一天我在街头踯躅
你在秋天里独自跳舞
回首落满悲欢的来时路
那覆水难收的赌注
我们用青春一起作证
我们曾遇见到幸福
作者:
男 xiangsong (天下第一菜) ★☆☆☆☆ -
盒子活跃会员
2003/9/3 16:25:09
8楼:
----------------------------------------------
天下第一菜

那一天我在街头踯躅
你在秋天里独自跳舞
回首落满悲欢的来时路
那覆水难收的赌注
我们用青春一起作证
我们曾遇见到幸福
作者:
男 skertone (奇奇怪) ★☆☆☆☆ -
盒子活跃会员
2003/9/4 8:35:59
9楼: 编译器不能检查你是否创建了实列,只能检查你是否申明了实列的指针

你哪几个有关的Query是不是在子窗口中用过就Free了?而在主窗口关闭时又

拿来Close 了??

一般用动态开控件时最好
要销毁时
  Object.Free;
  Object := nil;
引用时
  if Not Assigned(Object) then
  Object := TObject.Create(Self);
  Object.xxx;

这样就保证不会引用空指针了

用过的指针要设成 nil Assigned() 才能检查出来
----------------------------------------------
按此在新窗口浏览图片 按此在新窗口浏览图片 按此在新窗口浏览图片
作者:
男 xiangsong (天下第一菜) ★☆☆☆☆ -
盒子活跃会员
2003/9/4 9:47:03
10楼: 谢谢 skertone (奇奇怪) 谢谢老兄帮忙。 
我在子窗口中并没有free之。
我今天一气之下卸了delphi7,重装了delphi5又重写上述语句试了试,结果这里说的问题和我另一个贴子里说的问题都不见了,
http://bbs.2ccc.com/topic.asp?topicid=24283
我看还是我的D版delphi7有问题。看来我只能在delphi5里把程序重写了。
惨!!!55555555.........

----------------------------------------------
天下第一菜

那一天我在街头踯躅
你在秋天里独自跳舞
回首落满悲欢的来时路
那覆水难收的赌注
我们用青春一起作证
我们曾遇见到幸福
作者:
男 xiangsong (天下第一菜) ★☆☆☆☆ -
盒子活跃会员
2003/9/4 14:54:38
11楼: 不对呀,老兄,我以为是delphi的问题,其实不然,我发现,在子窗口里用query,没有任何问题,可是如果在这个子窗口里按钮事件里以showmodal方式打开的窗口里再用若干个query,退出时一定出错。
这可怎么办,你的办法我试过了,没有用呀。
还请再帮我想想办法,谢谢了。
----------------------------------------------
天下第一菜

那一天我在街头踯躅
你在秋天里独自跳舞
回首落满悲欢的来时路
那覆水难收的赌注
我们用青春一起作证
我们曾遇见到幸福
作者:
男 sealcheng (chengcheng) ★☆☆☆☆ -
普通会员
2003/9/4 16:17:36
12楼: 你不会不用吗!你试过这个吗

 子窗口       主窗口
   ↓           ↓
tform2.create(form1);

你的源代码能给我吗
sealcheng@163.com
----------------------------------------------
-
作者:
男 xiangsong (天下第一菜) ★☆☆☆☆ -
盒子活跃会员
2003/9/4 16:48:33
13楼: 谢谢sealcheng (chengcheng)  
我想可能是这里边的query组件太多了,不知怎么回事就出错。
打开窗口的次序是:主窗口-->子窗口-->showmodal一个normal窗口。
关键问题是在,如果这些query组件放在子窗口内,无论怎么检索都没问题,可是如果这些query放在第三个normal窗口内,则如果有两个以上query组件打开,则不是在第二个检索发生时出错就是在关闭主窗口时出错。(注意:是关闭主窗口)。
我的源程序马上发给你,我用的是delphi7,sql server 2000。
数据库你直接在sql server 2000里附加上就可以了。我用的是odbc连接。数据源名为seed_jinxiaocun,你的服务器用户密码什么的自己在datamodule1里改一改吧。谢谢,实在太谢谢你了。
----------------------------------------------
天下第一菜

那一天我在街头踯躅
你在秋天里独自跳舞
回首落满悲欢的来时路
那覆水难收的赌注
我们用青春一起作证
我们曾遇见到幸福
作者:
男 welcomer (welcomer) ★☆☆☆☆ -
普通会员
2003/9/5 11:01:19
14楼:  try
   application.CreateForm(Tf_seed_add,f_seed_buy_add);
   f_seed_add.showmodal;
 finally
   f_seed_add.Free;
 end;

你创建窗体从来都不释放的?要随时养成这个良好的习惯,创建后必须释放,要不然程序有时候会出错我的哦
----------------------------------------------
-
作者:
男 welcomer (welcomer) ★☆☆☆☆ -
普通会员
2003/9/5 11:07:53
15楼: 还有需要提示一下,如果你创建的窗体里面有query,并且在创建窗体的时候就打开query,那么释放窗体的时候必须close掉query,否则在创建窗体释放时不仅速度慢还会报错的
----------------------------------------------
-
作者:
男 xiangsong (天下第一菜) ★☆☆☆☆ -
盒子活跃会员
2003/9/5 14:34:29
16楼: 谢谢 welcomer 。
我创建窗口后总是在窗口的close事件里释放的。
我创建窗口时确实打开了query,但是在窗口关闭的时候我也试着加了query1.free,可是这样在关闭这个窗口的时候就出现了这种读地址错误。
好像是query过多有关系,我原来为同时记录编号和描述,每个下拉列表框都用了一个query,这样窗口内有七八个query,后来,所有的下拉列表都用同一个query,窗口内只有一个query,这样就不会出错了。这是为什么?

----------------------------------------------
天下第一菜

那一天我在街头踯躅
你在秋天里独自跳舞
回首落满悲欢的来时路
那覆水难收的赌注
我们用青春一起作证
我们曾遇见到幸福
作者:
男 xiangsong (天下第一菜) ★☆☆☆☆ -
盒子活跃会员
2003/9/6 11:12:04
17楼: 看来就是Query用的太多了,我这样作就没问题了,只用一个query,需要同时保存编号和描述的地方我就声明一个数组,把编号存在数组内,取编号的时候按下拉列表框返回的itemindex到数组里取编号,这样就没问题了。
我想可能是query占用的资源太多,线程太多,就出问题了。
谢谢大家这两天的关心和帮助。谢谢。
----------------------------------------------
天下第一菜

那一天我在街头踯躅
你在秋天里独自跳舞
回首落满悲欢的来时路
那覆水难收的赌注
我们用青春一起作证
我们曾遇见到幸福
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行175.7813毫秒 RSS