![]() |
Application.Terminate in Form1.OnCreate?
Delphi-Quellcode:
Kann mir vielleicht jemand sagen was Delphi veranlassen könntem das "Application.Terminate" einfach zu ignorieren (ja, auch wenn die Bedingungen dafür zutreffen)?
procedure TFmHaupt1.FormCreate(Sender: TObject);
{**********************************************} var i, j, a, x : Integer; txt : String; begin progdir := ExtractFilePath(Application.ExeName); Application.OnDeactivate := AppDeactivate; Application.OnActivate := AppActivate; Application.OnException := AppException; reginfo[1] := 'Werkstattplaner'; reginfo[2] := 'xyz'; reginfo[3] := IntToStr(Floor(GetCDriveSerial)); SetDevPassword(PChar(reginfo[2])); if IntToStr(AppDaysLeft(PChar(cn), PChar(reginfo[1]))) <> '9999' then reginfo[4] := '0' else reginfo[4] := '1'; if reginfo[4] = '0' then begin if SharewareLimit(cn, PChar(reginfo[1]), 30) then begin MessageDlg('Das 30 Tage-Zeitlimit ist überschritten.'+ 'Bitte registrieren sie sich!', mtInformation,[mbOk], 0); Application.Terminate; end else txt := reginfo[1]+' Testversion für ' +IntToStr(AppDaysLeft(PChar(cn), PChar(reginfo[1])))+' Tag(e)!'; end else txt := reginfo[1]+' Registriert für ' +GetEncrypted(PChar(cn),PChar(reginfo[1]),'RegName'); FmHaupt1.Caption := txt; AliasCheck('Kalender'); // ... end; Noch zur Erläuterung, die meisten Befehle gehören zu einer Komponente die kontrolliert ob die Software registriert ist bzw wie lange sie noch gültig ist. |
??? was willst du? Wenn du Delphi sagst: "Application.Terminate", dann wird es auch Application.Terminate ausführen. Du kannst die Zeile auskommentieren, dann gehts nichtmehr, aber ich glaube, das meinst du nicht?!?!
|
Zitat:
|
Application.Terminate beendet die Anwendung nicht sofort, siehe Delphi-Hilfe.
Zum sofortigen Beenden müßtest Du Halt verwenden, aber es ist angeblich nicht zu empfehlen, weil Speicher nicht richtig aufgeräumt werden kann (weiß nicht, ob das stimmt, ich meine, daß manchmal meine geladenen DLL's hängen geblieben sind). Ich verwende daher Application.Terminate an der geeigneten Stelle und danach ein exit in der Methode, damit der weitere Code nicht ausgeführt wird. Gruß Roderich |
Setze eine globale Variable, überprüf sie in OnShow von TForm und beende deine Anwendung gegebenenfalls dort sauber mit Close.
|
Super danke Leute :thuimb:
Ich schliess das Programm jetzt in OnShow, über einer globalen Variable, ganz normal mit Close (naja und mit ein paar Anpassungen in OnCloseQuery) :). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:36 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-2025 by Thomas Breitkreuz