Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi autostart, datei im onCreate Ereignis laden (https://www.delphipraxis.net/77924-autostart-datei-im-oncreate-ereignis-laden.html)

uht 26. Sep 2006 20:47


autostart, datei im onCreate Ereignis laden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich habe ein kleines wakeonlan-Tool geschrieben (gibt es zwar schon zu Haufen aber ihr wisst ja, der Lerneffekt...), dass sich in den Autostart eintragen lässt.
Im onCreate Ereignis des Tools lasse ich die ini-Datei mit dem Port und den Listeneinträgen der zu weckenden Rechner laden.
Wenn ich das Tool manuell starte wird die ini-Datei anstandslos geladen und die Werte richtig in die Liste eingetragen usw. ...
Genauso, ohne jegliche Probleme läuft das auch mit dem Autostart auf meinem WinXP Rechner ab, mit dem ich das Programm geschrieben habe. Wenn ich es aber auf meinen Win2000 Rechnern mit dem Autostart laufen lasse, lädt er mir entweder nur die erste Zeile der ini-Datei oder bringt mir gleich eine Zugriffsverletzung. Beim manuellen Start auf den Win2000 Rechnern läuft ebenfalls alles ohne Probleme.

Hat jemand eine Ahnung an was das liegen könnte?
Zum besseren Verständnis hier der Code zum Laden:
Delphi-Quellcode:
procedure Twakemeup.FormCreate(Sender: TObject);
  var datei: textfile;
      dummy: String;
      regist: TRegistry;
  begin
                               // lädt die Einstellungen
    if fileexists(dateiname)then
    begin
      Assignfile(datei,dateiname);
      Reset(datei);

      Readln(datei,dummy);
      EPort.Text:= dummy;     // Port auslesen

      while not eof(datei) do           // MAC Adressen auslesen
      begin
        Readln(datei,dummy);
        LBRechner.Items.Add(dummy);         // und in ListBox eintragen
      end;
      CloseFile(datei);
    end;
  ...
  end;
und anbei noch die .exe mit der ini-Datei zum testen.

Luckie 26. Sep 2006 21:11

Re: autostart, datei im onCreate Ereignis laden
 
Welchen Wert enthät die Variable dateiname?

uht 26. Sep 2006 21:41

Re: autostart, datei im onCreate Ereignis laden
 
dateiname habe ich als Konstante mit dem Wert 'settings.ini' deklariert.

Wenn es hilfreich ist, kann ich auch den ganzen Quelltext posten, ist ja nicht viel und auch kein Geheimnis.

Luckie 26. Sep 2006 21:46

Re: autostart, datei im onCreate Ereignis laden
 
Und woher soll Windows wissen wo sich diese Datei befindet? Seit DOS 2.0 kennt das Betriebssystem eine Verzeichnisstruktur.

uht 26. Sep 2006 21:56

Re: autostart, datei im onCreate Ereignis laden
 
Oha, daran könnte es liegen. :wall:

Aber die settings.ini liegt doch im gleichen Verzeichnis wie die exe, dann ist der Pfad doch egal oder?

Ich probiers gleich morgen früh aus, wenn ich wieder an meinem eigenen Rechner sitze.

Danke

Luckie 26. Sep 2006 22:16

Re: autostart, datei im onCreate Ereignis laden
 
Nein, ist es eben nicht. Die Datei wird im aktuellen Arbeitsverzeichnis gesucht und wenn du eine Verknüpfung im Autostart hast, ist das das Verzeichnis, wo die Verknüpfung liegt.

Cyberbob 27. Sep 2006 00:00

Re: autostart, datei im onCreate Ereignis laden
 
Ich würde die Konstante in eine Variable (Evtl. global) umwandeln und dann oben in deinem OnCreate-Erreignis vollgendes zuweisen:

dateinane := ExtractFileName(ParamStr(0)) + '\settings.ini';

Gruss
Christian

uht 27. Sep 2006 16:27

Re: autostart, datei im onCreate Ereignis laden
 
Hat geklappt!

Vielen Dank an euch beide.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:00 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