又是form问题。请各位大哥指教~!

yehof 2002-09-18 12:49:38

procedure TForm1.CompanyInformation1Click(Sender: TObject);
begin
TForm2.Create(Application);
form2.show;
end;

debugger excetion notification: (error prompt)
project project1.exe raise excetion class EAccessViolation with message' Access violation at address 006c5579 in module 'vlc60.bpl'.
read of address 0000004c'. process stopped.

project -> option -> package下的所有*.bpl都选了。
而且也将vlc60.bpl copy进同一个目录下。 还是有此错误。

project -> option -> linker 下的max stack size: 也设成$00400000了。

到底真正原因在哪?
...全文
27 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
naughtyboy 2002-09-18
  • 打赏
  • 举报
回复
implementation
uses unit2;
yehof 2002-09-18
  • 打赏
  • 举报
回复
还是不行。

手动创建语句:TForm2.Create(Form2)

连build的时候也不能通过。

请问动态创建应该如何写?

naughtyboy 2002-09-18
  • 打赏
  • 举报
回复
你说的手动创建应该就象My_First说的那样
with TForm2.Create(Form2) do
begin
show;
sleep(2000);
free;
end;
如果想占用比较小的内存,可以使用动态创建
yehof 2002-09-18
  • 打赏
  • 举报
回复
unit Unit1;

var
Form1: TForm1;
implementation
uses unit2;

procedure TForm1.button1click(Sender: TObject);
begin
form1.Hide;
form4:=tform4.create(application);
form4.show;
end;

就这行代码,build的时候没问题, run的时候到了 form4:=tform4.create(application);
就出问题了。。
yehof 2002-09-18
  • 打赏
  • 举报
回复
楼上的想法与我的一样,我的设想也是所有都是application.createform来create的话,占用太多资源了,导致内存出错。

但小第是初学delphi,对手工创建不太熟悉。

试过这样不行:
form2:=TForm2.Create(Application);
form2.show;
在form1的button1里面调用form2的代码。除了这样写,还有其他方法吗?
My_first 2002-09-18
  • 打赏
  • 举报
回复
你打开project-->option-->把左边 自动创建 除主窗体外,其它的全都放到右边,在程序里需要的时候手工创建.

像你这样写,占的资料不得了。

手工创建
form2:=TForm2.Create(Application);
form2.show;
ccat 2002-09-18
  • 打赏
  • 举报
回复
好像是你用了什么第三方的控件,没有注册
对了,你的编译选项先不要选使用runtime库的那一项
yehof 2002-09-18
  • 打赏
  • 举报
回复
试过不行。sorry,我没有说清楚:

我的project里面有7个form.只有form1是auto-create form。 其余的是available form。在project中的代码,这样写code的话,出错。。。
Application.Initialize;
Application.CreateForm(TForm1, Form1);
form2:=Tform2.Create(application);
form3:=Tform3.Create(application);
form4:=Tform4.Create(application);
form5:=Tform5.Create(application);
form6:=Tform6.Create(application);
form7:=Tform7.Create(application);
Application.Run;

如果连form1都是用tform1.create的话,也报出错。

如果所有form都是application.createform的话,build与run都没有问题,但package后在另外一个没有安装delphi的os就报vlc60.bpl warning出错。关闭了。

请教。。
如果需要form1做主窗口,其余form做show出来的窗口的话。
project代码应该怎么写?

还有,我的问题是属于form的问题吗?
一个project里面7个form同时auto-create的话,会不会有stack overflow的问题产生? 谢谢。

My_first 2002-09-18
  • 打赏
  • 举报
回复
同意楼上。
佣工7001 2002-09-18
  • 打赏
  • 举报
回复
form2:=TForm2.Create(Application);
form2.show;

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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