Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi alternativen zu close??? (https://www.delphipraxis.net/43328-alternativen-zu-close.html)

brutus 1. Apr 2005 20:33


alternativen zu close???
 
hier ist mein quellcode
Delphi-Quellcode:
procedure TFDUP.FormCreate(Sender: TObject);
begin
hacker:=0;
uni:=TAuswertung.create;
user;
//DATEI SCHLIESSEN !!!!
end;

procedure tfdup.user;
VAR PW:string;
begin

uni.id:=strtoint(InputBox('Bitte geben sie ihre Benutzer-ID ein','Ihre ID',inttostr(-maxint)));
PW:=InputBox('Bitte geben sie ihr Passwort ein'
             ,'Ihr Passwort','OI');
IF (uni.id<>0) OR ((PW<>'OI')) THEN
 IF NOT passwort(pw) THEN
  BEGIN
   showmessage('Das von ihnen eingegeben Passwort ist Falsch !');
   inc(hacker);
   CASE hacker OF
   1..3: IF MessageDlg('Wollen sie es noch einmal probieren?',
            mtConfirmation, [mbYes, mbNo], 0) = mrYes
         THEN user
         ELSE
          BEGIN
           MessageDlg('Das Programm wird beendet.', mtInformation, [mbOk], 0);
           //DATEI SCHLIESSEN !!!!
          END;

      4: BEGIN
              showmessage('Sie haben zum 4. mal ein falsches Passwort eingegeben'+#13+
                     'Überprüfen sie die folgende Eingabe besonders sorgfältig !!!');
              user;
         END;
      5: BEGIN
              showmessage('Sie haben zum 5. mal ein falsches Passwort eingegeben'+#13+
                          'Das Programm wird beendet !');

          //DATEI SCHLIESSEN !!!!
         END

 ELSE
    BEGIN
     showmessage('Gratulation !'+#13+''+''+#13+''+'Ihr Passwort ist richtig !'+#13+'');
     showmessage('Herzlich Willkomen'+#13+''+''+#13+''+name+'!'+#13+'');
     hacker:=0;
    END;
end;
end;
end;
also mit close wird das programm nicht geschlossen weil es ebend bei form create drinne steht- was kann ich stattdessen machen???

Die Muhkuh 1. Apr 2005 20:36

Re: alternativen zu close???
 
Application.Terminate

brutus 1. Apr 2005 20:37

Re: alternativen zu close???
 
werden danach auch alle anderen units und formulare aus dem speicher geschmissen?

3_of_8 1. Apr 2005 20:40

Re: alternativen zu close???
 
Was willst du beenden? Dein Programm oder eine andere Anwendung?

Bei deinem eigenen verwende Halt oder Application.Terminate.

Bei einer anderen: http://www.dsdt.info/tipps/?id=175 und http://www.dsdt.info/tipps/?id=636

Mit ersterem beendest du eine Anwendung mit dem Exenamen, den du mit zweiterem herausfindest, indem du den Fenstername angibst. Auf der gleichen Seite steht auch noch woanders, wie man ein Handle dazu verwendet.

Und zu deiner Frage: Ja. AFAIK wird das Formular beim Ereignis FormDestroy freigegeben und FormDestroy wird bei Terminierung der Anwendung ausgelöst. Die genaue Reihenfolge kannst du in der OH nachschlagen.

Christian Seehase 1. Apr 2005 20:41

Re: alternativen zu close???
 
Moin Brutus,

Zitat:

Zitat von brutus
werden danach auch alle anderen units und formulare aus dem speicher geschmissen?

ja, und?

Denn

Zitat:

Zitat von brutus
also mit close wird das programm nicht geschlossen ...

das war ja offensichtlich so gedacht?

Wobei ich allerdings die Begründung, warum es mit close nicht geht nicht so ganz nachvollziehen kann.

Gruber_Hans_12345 1. Apr 2005 20:42

Re: alternativen zu close???
 
Vielleicht kannst du es direkt in die DPR reinschreiben
Delphi-Quellcode:
begin
    if CheckPassword then begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
   end;
end.

Die Muhkuh 1. Apr 2005 20:43

Re: alternativen zu close???
 
Zitat:

Zitat von Christian Seehase

Zitat:

Zitat von brutus
also mit close wird das programm nicht geschlossen ...

das war ja offensichtlich so gedacht?

Wobei ich allerdings die Begründung, warum es mit close nicht geht nicht so ganz nachvollziehen kann.

Hi,

wenn du zwei Formen offen hast, aber eine mit visible := false; und du machst bei der sichtbaren ein Close; wird das Sichtbare geschlossen, aber das andere ist noch offen und die Anwendung läuft noch.

Christian Seehase 1. Apr 2005 20:49

Re: alternativen zu close???
 
Moin Manu,

Zitat:

Zitat von Spider
wenn du zwei Formen offen hast, aber eine mit visible := false; und du machst bei der sichtbaren ein Close; wird das Sichtbare geschlossen, aber das andere ist noch offen und die Anwendung läuft noch.

so :gruebel: Bei mir nicht. ;-)

Wenn Du das Hauptformular mit Close schliesst, wird üblicherweise auch die Anwendung beendet.

Khabarakh 1. Apr 2005 20:50

Re: alternativen zu close???
 
Zitat:

Zitat von Spider
Zitat:

Zitat von Christian Seehase

Zitat:

Zitat von brutus
also mit close wird das programm nicht geschlossen ...

das war ja offensichtlich so gedacht?

Wobei ich allerdings die Begründung, warum es mit close nicht geht nicht so ganz nachvollziehen kann.

Hi,

wenn du zwei Formen offen hast, aber eine mit visible := false; und du machst bei der sichtbaren ein Close; wird das Sichtbare geschlossen, aber das andere ist noch offen und die Anwendung läuft noch.

Das gilt allerdings nur, wenn die Form, die geschlossen wird, nicht die Hauptform ist. Sonst wird das ganze Programm geschlossen.

Zusammengefasst:
  • Close in Verbindung mit dem Hauptformular beendet die Anwendung, OnClose und OnCloseQuery werden aber noch aufgerufen.
  • Application.Terminate beendet die Anwendung normal (afaik ohne oben genannte Events)
  • Halt ist ein Programmabbruch, sollte nicht verwendet werden

3_of_8 3. Apr 2005 11:21

Re: alternativen zu close???
 
Ich denke, bei Application.terminate wird OnCloseQuery nicht ausgeführt, ob OnClose ausgeführt wird weiß ich nicht, aber man kann ja folgende Proc schreiben:

Delphi-Quellcode:
procedure TForm1.beenden;
begin
onclose(Form1);
//onclosequery, wenn man will.
application.terminate;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz