AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Überprüfung bei Programmstart

Ein Thema von Freyr77 · begonnen am 22. Dez 2016 · letzter Beitrag vom 22. Dez 2016
Antwort Antwort
Seite 1 von 3  1 23      
Freyr77
(Gast)

n/a Beiträge
 
#1

Überprüfung bei Programmstart

  Alt 22. Dez 2016, 10:22
Delphi-Version: 10 Berlin
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?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#2

AW: Überprüfung bei Programmstart

  Alt 22. Dez 2016, 10:32
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Überprüfung bei Programmstart

  Alt 22. Dez 2016, 10:56
Delphi-Quellcode:
  if fileexists(FileName) then
    ShowMessage(FileName + ' exists OK')
  else
    ShowMessage(FileName + ' does not exist');

Zitat:
OnCreate des Hauptformulars auf ein anderes Formular zugreifst
macht er ja nicht...
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.889 Beiträge
 
Delphi 12 Athens
 
#4

AW: Überprüfung bei Programmstart

  Alt 22. Dez 2016, 10:59
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.
Thomas Breitkreuz
  Mit Zitat antworten Zitat
Freyr77
(Gast)

n/a Beiträge
 
#5

AW: Überprüfung bei Programmstart

  Alt 22. Dez 2016, 11:33
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.
Zugriffsverletzung bei Adresse 009409A 12 in Modul 'Programm.Exe'. Lesen von Adresse 0000FFC4.
Ich rufe das hier im OnCreate auf:

Delphi-Quellcode:
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;
Mir ist klar das es so noch nicht gehen kann, aber auch noch nicht so ganz wie ich das lösen soll.
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#6

AW: Überprüfung bei Programmstart

  Alt 22. Dez 2016, 11:33
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
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.889 Beiträge
 
Delphi 12 Athens
 
#7

AW: Überprüfung bei Programmstart

  Alt 22. Dez 2016, 11:36
Du hast lEinstellungen noch nicht intantiiert, versuchst aber dennoch, darauf zuzugreifen. Das kann nicht funktionieren.
Thomas Breitkreuz
  Mit Zitat antworten Zitat
Freyr77
(Gast)

n/a Beiträge
 
#8

AW: Überprüfung bei Programmstart

  Alt 22. Dez 2016, 11:41
Du hast lEinstellungen noch nicht intantiiert, versuchst aber dennoch, darauf zuzugreifen. Das kann nicht funktionieren.
Richtig. Ich überlege gerade wie ich das am besten umsetze. Ich werde wohl mal a.defs Vorschlag versuchen.
  Mit Zitat antworten Zitat
H.Bothur

Registriert seit: 25. Jun 2012
Ort: Seevetal & Lagos
257 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Überprüfung bei Programmstart

  Alt 22. Dez 2016, 11:54
mache so etwas so:

Delphi-Quellcode:
Var:
  ProgrammGestartet: Boolean;

im OnCreate:
  ProgrammGestartet := False;

im OnShow:
  if not ProgrammGestartet then
  begin
    PrüfeObIniDatei
    if NotIniDatei
    begin
      Abfragen
    end;
  end;
Und ja - das geht bestimmt besser und eleganter, aber ich programmiere immer noch in Delphi 6.0

Hans
Hans-Georg Bothur
www.hermann-juergensen.de
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

AW: Überprüfung bei Programmstart

  Alt 22. Dez 2016, 12:05
Und guck dir mal an, was das ParamStr(0) + 'Test.INI' ergibt. Ich denke nicht, dass du das willst.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz