Einzelnen Beitrag anzeigen

Benutzerbild von bigg
bigg

Registriert seit: 1. Jul 2007
155 Beiträge
 
#10

Re: Anwendung todsicher beenden, aber wie??

  Alt 19. Feb 2008, 11:43
Zitat von Luckie:
Der Speicher wird von Windows wieder freigegeben. Es ist zwar kein sehr schöner Programmierstil andere hinter sich aufräumen zu lassen, aber das ist nicht das Problem. Das eigentliche Problem ist, dass die Referenzzähler von geladenen DLLs nicht dekrementiert werden und Windows diese dann nicht aus dem Speicher schmeissen kann, wenn sie nicht mehr benötigt werden.
Jein. Unter NT-Systemen mag diese Aussage stimmen. Ältere Systeme werden da nicht ganz so gründlich sauber machen.

Zitat von Luckie:
Schlechten Programmierstil aufgrund von Unzulänglichkeiten der Entwicklungsumgebung vorzuziehen, finde ich falsch. Lieber sauber programmieren und die paar nötigen Änderungen von Hand in der Projektdatei vornehmen.
Seh ich auch so.

Delphi-Quellcode:
label
   Ende;
begin
  Application.CreateForm(TPassWort, Passwort); // Wenn PWD falsch, dann wird Application.Terminate aufgerufen
  if Application.Terminated then
    goto Ende; // wir sind fertig
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  ...
  Application.Run;
  Ende:
end;
Hier ein Label zu verwenden ist schon ziemlich strange und lässt wie Luckie schon sagte auf schlechten Programmierstil schließen.
Warum nicht so:

Delphi-Quellcode:
  Application.Initialize;
  Application.CreateForm(TPassWort, Passwort);
  if (Passwort <> nil) then
  begin
    if (Passwort.Correct) then
    begin
      Application.CreateForm(TForm1, Form1);
      Application.CreateForm(TForm2, Form2);
      Application.Run;
    end;
  end;
oder so:

Delphi-Quellcode:
  begin
    Application.Initialize;
    Application.CreateForm(TPassWort, Passwort);
    Application.Run;
  end;

  procedure TPassWort.Login_Correct_Click(Sender: TObject);
  begin
    if (Self.Correct) then
    begin
      Application.CreateForm(TForm1, Form1);
      Application.CreateForm(TForm2, Form2);
    end
    else
      Self.Close
  end;
  Mit Zitat antworten Zitat