我刚刚编写了一个注册器 ,在工程文件里编写如下代码:
program Project1;uses
Forms,Controls, Registry,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2},
Unit3 in 'Unit3.pas' {Form3},
Unit4 in 'Unit4.pas' {Form4},
Unit5 in 'Unit5.pas' {Form5},
Unit6 in 'Unit6.pas' {Form6},
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Dialogs, StdCtrls, jpeg, ExtCtrls;
{$R *.res}
var
Myreg : TRegistry ;
times : integer ;
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm4, Form4);
Application.CreateForm(TForm5, Form5);
Application.CreateForm(TForm6, Form6); Myreg := TRegistry.Create ;
Myreg.RootKey := HKEY_CURRENT_USER ;
Myreg.OpenKey('software\jysoft\',true ) ;
times := Myreg.ReadInteger('times');
if times > 3 then
begin
ShowMessage('Too Times!' );
end
else if times <> 999 then
begin
Form6.ShowModal ;
end
else
begin
Application.Run;
end;
Myreg.Free ;end.
为什么会抛出堆栈溢出
program Project1;uses
Forms,Controls, Registry,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2},
Unit3 in 'Unit3.pas' {Form3},
Unit4 in 'Unit4.pas' {Form4},
Unit5 in 'Unit5.pas' {Form5},
Unit6 in 'Unit6.pas' {Form6},
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Dialogs, StdCtrls, jpeg, ExtCtrls;
{$R *.res}
var
Myreg : TRegistry ;
times : integer ;
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm4, Form4);
Application.CreateForm(TForm5, Form5);
Application.CreateForm(TForm6, Form6); Myreg := TRegistry.Create ;
Myreg.RootKey := HKEY_CURRENT_USER ;
Myreg.OpenKey('software\jysoft\',true ) ;
times := Myreg.ReadInteger('times');
if times > 3 then
begin
ShowMessage('Too Times!' );
end
else if times <> 999 then
begin
Form6.ShowModal ;
end
else
begin
Application.Run;
end;
Myreg.Free ;end.
为什么会抛出堆栈溢出
解决方案 »
- win32编程与数据库操作
- 再提 show 和 ShowModal 的区别?
- timer和thread的问题,寻解决方案
- 有2个List。分别是字段名和想对应的值。怎么用循环存入数据库啊
- delphi发送stream出现Stream read error
- 如何用delphi制作一个独立的www服务器?
- 关于dbgrid的一个问题,非常急用,请帮忙,谢谢
- 我怎样才能截获这个程序发送的消息,或者确定它的消息格式?分不够再加!
- 谁会用ShellExecuteEx啊?我想取运行程序的句柄
- 新手的几个粗浅问题。。。
- 诚请高人:怎么让RadioGroup里每一项的字符如lable般支持分行显示!急!
- 用ADO与SQLSERVER连接如何恢复数据库
times := StrToIntDef(Myreg.ReadString('times'),0);
begin
Form6.ShowModal ;
end
else
begin
Application.Run;
end;
这可能有问题哈
else if 的条件有问题啊?
把它放到Myreg.Free ;之后。
另外如果你要中途退出程序(times > 3)可以Application.Terminated.
把它放到Myreg.Free ;之后。
另外如果你要中途退出程序(times > 3)可以Application.Terminated.
第二种可以用ShowModal,而第一种好像不能用Showmodal,
还有既然用了Application.CreateForm(TForm1,Form1)那么Application.Run好像是肯定需要的了!
不如这样
begin
if 到期 then
Exit;
Application.Initialize;
Application.CreateForm(TForm1, Form1); //好像是默认显示第一个,
Application.CreateForm(TForm2, Form2);
...end.就可以了,用不着那样复杂吧