Hallo,
ich möchte, dass mein Progamm schon beim Laden wieder beendet wird, wenn festgestellt wird, dass eine notwendige Datei fehlt.
Dabei soll aber nicht die FormClose-Procedur ausgeführt werden.
Mir ist es noch nicht gelungen, das zu unterdrücken. Wie macht man das?
Ich dachte application.Terminate wäre ein Lösungsweg. Aber irgend etwas mache ich scheinbar falsch.
Ich habe es auch schon ohne application.terminate probiert und mit einer public-Variablen p_fehler:integer
Auf dem Weg meldete sich immer der Norton CrashGuard mit einem Fehler, verursacht durch meinen Programm.
<pre>
procedure TForm1.FormCreate(Sender: TObject);
var
Ini: TIniFile;
s,ss,s1,s2:string;
tes:integer;
ter:real;
begin
// p_fehler:= 0;
if not FileExists('x.ini') then
begin
// p_fehler:=1;
showmessage('Die INI-Datei x.ini fehlt.'+#13#10+'Das Programm wird deshalb abgebrochen.');
application.Terminate;
close;
end;
if not FileExists('x.dat') then
begin
showmessage('Die Datendatei x.dat fehlt.'+#13#10+'Das Programm wird deshalb abgebrochen.');
application.Terminate;
close;
end;
try
Ini:=TIniFile.Create('x.ini');
p_spg:=Ini.ReadString('Tab','SPG','');
try
tes:= strtoint(p_spg); // p_ variablen sind bei "public"
except
p_spg:= '5';
showmessage('Die INI-Datei ist beschädigt (Anzahl der Spalten ist ungültig). Es werden nur 5 Spalten angezeigt');
end;
finally
Ini.Free;
end;
</pre>
<pre>
//************************************************** *********************
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var i:integer;
begin
// if p_fehler = 0 then
//begin
i:= application.MessageBox(Pchar('Tabelle speichern?'),Pchar('Sicherheit'),mb_YesNo);
if i = 6 then SaveStringGridToFile(sg1,'x.dat'); // 6 = JA
// end;
end;
</pre>
Gruß
Werner
ich möchte, dass mein Progamm schon beim Laden wieder beendet wird, wenn festgestellt wird, dass eine notwendige Datei fehlt.
Dabei soll aber nicht die FormClose-Procedur ausgeführt werden.
Mir ist es noch nicht gelungen, das zu unterdrücken. Wie macht man das?
Ich dachte application.Terminate wäre ein Lösungsweg. Aber irgend etwas mache ich scheinbar falsch.
Ich habe es auch schon ohne application.terminate probiert und mit einer public-Variablen p_fehler:integer
Auf dem Weg meldete sich immer der Norton CrashGuard mit einem Fehler, verursacht durch meinen Programm.
<pre>
procedure TForm1.FormCreate(Sender: TObject);
var
Ini: TIniFile;
s,ss,s1,s2:string;
tes:integer;
ter:real;
begin
// p_fehler:= 0;
if not FileExists('x.ini') then
begin
// p_fehler:=1;
showmessage('Die INI-Datei x.ini fehlt.'+#13#10+'Das Programm wird deshalb abgebrochen.');
application.Terminate;
close;
end;
if not FileExists('x.dat') then
begin
showmessage('Die Datendatei x.dat fehlt.'+#13#10+'Das Programm wird deshalb abgebrochen.');
application.Terminate;
close;
end;
try
Ini:=TIniFile.Create('x.ini');
p_spg:=Ini.ReadString('Tab','SPG','');
try
tes:= strtoint(p_spg); // p_ variablen sind bei "public"
except
p_spg:= '5';
showmessage('Die INI-Datei ist beschädigt (Anzahl der Spalten ist ungültig). Es werden nur 5 Spalten angezeigt');
end;
finally
Ini.Free;
end;
</pre>
<pre>
//************************************************** *********************
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var i:integer;
begin
// if p_fehler = 0 then
//begin
i:= application.MessageBox(Pchar('Tabelle speichern?'),Pchar('Sicherheit'),mb_YesNo);
if i = 6 then SaveStringGridToFile(sg1,'x.dat'); // 6 = JA
// end;
end;
</pre>
Gruß
Werner
Comment