Entwickler-Ecke

Sonstiges (Delphi) - Fehler beim Schliessen ...


KeinePanik - So 15.09.02 22:57
Titel: Fehler beim Schliessen ...
Also mein Programm benötigt mehrere Dateien ... Deshalb überprüfe ich in der (Haupt-)Form.create ob auch alle da sind ...


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.FormCreate(Sender: TObject);
begin
if fileexists('sowieso.exe') then {blabla ...} else
begin
showmessage('Fehler : Die Datei "sowieso.exe" befindet sich nicht im Verzeichniss !!');
Fehler := true;
close; // Mit Application.terminate funzt es ...
end;


Meine Close Procedure sieht in etwa so aus :


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if fehler=false then
begin // Was geändert und nicht gespeichert ?
  if changed=true then
  begin
   if MessageDlg('Die Einstellungen wurden geändert ! Übernehmen ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
    begin
    speichern(Form1);
    end; //if changed true
  end;
end;


Wenn ich also in der Form.create die Variable "fehler" auf true gesetzt habe, sollte sich das Programm eigentlich schliessen ... Aber es macht dann trotzdem bei Create weiter ...

Also wie im Code schon gesagt, an der Betreffenden Zeile funzt es mit application.terminate ... Allerdings muss bei meinem Code ja irgendein Fehler sein ...


LCS - Mo 16.09.02 10:03

Hi
eigentlich enthält dein Code keinen Fehler. Das einzige was du nicht berücksichtigt hast: Close lässt sich frühestens im OnActivate Ereignis auslösen. Du musst das nur ein bisschen umstellen. So etwa:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.FormCreate(Sender: TObject); 
begin 
  bFirstRun := True;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
  if bFirstRun then begin
    bFirstRun := False;
    //Deine Prüfungen
    if  Fehler then
      Close;
  end;
end;


Gruss Lothar


wwerner - Mo 16.09.02 10:44

Oder du machst die Test in der DPR-Datei