![]() |
Delphi-Version: 10 Berlin
Überprüfung bei Programmstart
Ich möchte das bei Doppelklick auf die .exe meines Programms geprüft wird ob sich die Ini-Datei im Programmverzeichnis befindet.
Das Programm startet sich ja generell ohne diese Ini gar nicht. Wenn die Ini nicht gefunden wurde, soll sich das Einstellungsfenster als erstes öffnen, hier soll der Nutzer die Daten für die Ini selbst eingeben. Ich habe die ganze Prozedur als erste auszuführende Instanz in das "OnCreate" gepackt. Alles was passiert ist das eine Exception bei Start angezeigt wird, danach geht gar nichts mehr. Hat jemand eine Idee wie ich das am besten realisieren kann? |
AW: Überprüfung bei Programmstart
Wenn Du im OnCreate des Hauptformulars auf ein anderes Formular zugreifst, muss es zwangsläufig knallen, da dieses ja noch gar nicht erzeugt wurde. Es gibt mehrere Möglichkeiten:
- eine temporäre Instanz des Einstellungsfensters per Code erstellen und darauf zugreifen - Code aus dem OnCreate entfernen und z.B. ins OnActivate verschieben - selbstdefinierte Nachricht ans eigene Fenster schicken (per PostMessage) und später darauf reagieren - etc. pp. |
AW: Überprüfung bei Programmstart
Delphi-Quellcode:
if fileexists(FileName) then
ShowMessage(FileName + ' exists OK') else ShowMessage(FileName + ' does not exist'); Zitat:
|
AW: Überprüfung bei Programmstart
Hallo,
- Welche Exception wird denn geworfen? - Eine Ini-Datei im Programmverzeichnis ist keine gute Idee, Otto-Normal-User hat auf den Programme-Ordner keine Schreibrechte. |
AW: Überprüfung bei Programmstart
Zitat:
Ich rufe das hier im OnCreate auf:
Delphi-Quellcode:
Mir ist klar das es so noch nicht gehen kann, aber auch noch nicht so ganz wie ich das lösen soll.
var
lEinstellungen: TTFormEinstellungen; begin if not(FileExists(ParamStr(0) + 'Test.INI')) then begin //Einstellungen-Fenster öffnen, Daten selbst eintragen, Übernehmen -> Programm starten ShowMessage('Ini-Datei nicht gefunden. Daten im nächsten Schritt selbst eintragen.'); lEinstellungen.BringToFront; end; end; |
AW: Überprüfung bei Programmstart
Immer wieder schöne Lösung wie ich finde:
- du prüfst, ob die Ini-Datei existiert bereits in der DPR-Datei bevor die Formulare erzeugt werden - im Hauptformular wartest du darauf, bis das Formular komplett sichtbar ist (das impliziert meiner Meinung nach "Ok, Formular(e) komplett geladen") - Dann wertest du deine Prüfung aus der DPR-Datei aus |
AW: Überprüfung bei Programmstart
Du hast lEinstellungen noch nicht intantiiert, versuchst aber dennoch, darauf zuzugreifen. Das kann nicht funktionieren.
|
AW: Überprüfung bei Programmstart
Zitat:
|
AW: Überprüfung bei Programmstart
mache so etwas so:
Delphi-Quellcode:
Und ja - das geht bestimmt besser und eleganter, aber ich programmiere immer noch in Delphi 6.0
Var:
ProgrammGestartet: Boolean; im OnCreate: ProgrammGestartet := False; im OnShow: if not ProgrammGestartet then begin PrüfeObIniDatei if NotIniDatei begin Abfragen end; end; Hans |
AW: Überprüfung bei Programmstart
Und guck dir mal an, was das ParamStr(0) + 'Test.INI' ergibt. Ich denke nicht, dass du das willst.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13: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