![]() |
Datei Handling nach Autostart
Hallo da draussen,
ich habe ein merkwürdiges Problem, für das ich einfach keine Lösung finde: Ich habe ein Programm geschrieben, das das Vorhandensein einer Datei überprüfen aoll. Ausserdem soll es diverse Informationen in eine Logdatei schreiben. Mit folgendem Code überprüfe ich das Vorhandensein der Datei:
Delphi-Quellcode:
Und das ist die Funktion, die das Log schreibt:
function AliveFileAvailable (filename: string): boolean;
var F: file; begin AddLogEntry('Checking File Availability ...'); AssignFile (F, filename); {$I-} Reset (F); {$I+} Result:= (IOResult=0); if Result then begin AddLogEntry('-> File Available, closing ...'); CloseFile (F); end else begin AddLogEntry('-> File NOT Available!!! ...'); end; end;
Delphi-Quellcode:
Das klappt so weit auch gut, so lange ich mein Programm manuell starte (also Doppelklick auf das Icon auf meinem Desktop).
function AddLogEntry(inhalt: string): boolean;
var F: text; s1, s2, ausgabe: string; datum, zeit: TDateTime; begin datum:= date(); zeit:= time(); s1:= DateTimeToStr(datum); s2:= TimeToStr(zeit); ausgabe:= s1+'-'+s2+': '+inhalt; AssignFile(F, logdateiname); {$I-} Append (F); {$I+} if IOResult<>0 then begin Rewrite(F); end; WriteLn(F, ausgabe); CloseFile(F); end; Packe ich jedoch einen Link in den Autostartordner, damit das Programm beim Systemstart ausgeführt wird, so erfolgt kein Logging und die überprüfte Datei wird trotz Vorhandensein nie gefunden. Mein Programm, die gesuchte Datei und das Log liegen alle in einem Verzeichnis (C:\IP-Symcon). Woran liegt das? Als Workaround, so dachte ich, bastle ich mir einfach einen Loader für mein Programm und lege ihn ins selbe Verzeichnis, wie mein Programm. Mein Programm wird dann durch ShellExecute ausgeführt. Doch auch hier das Problem: starte ich den Loader per Dopperlklick vom Desktop, so geht alles gut. Liegt er im Autostartordner und wird beim Computerstart ausgeführt, so passiert nichts. Warum? Nebenbei bemerkt: Ich habe mit Delphi 2010 prorammiert und das Programm läuft unter WindowsXP Pro. Kann mir jemand helfen? Grüße, Andreas |
Re: Datei Handling nach Autostart
Und wie sehen die Pfadangaben aus?
|
Re: Datei Handling nach Autostart
Hm, ich glaube, ich bin dem Fehler auf der Spur.
Nach Autostart (mein Programm liegt übrigens nicht als Link im Autostartordner, sondern ich habe es in der Registry unter Aktueller Benutzer\Run eingetragen), schreibt mein Programm doch ein Log. Jedoch nicht in das Verzeichnis, in dem es liegt, sondern in mein Benutzerverzeichnis (C:\Dokumente und Einstellungen\Andreas). Folglich wird es auch dort nach der zu überwachenden Datei suchen und sie entsprechend nicht finden. Blöd! Wie kann ich unter Delphi feststellen, in welchem Verzeichnis ein Programm liegt? Grüße, Andreas @Luckie Ich habe keine Pfadangaben gemacht. Das ist wohl das Problem :wall: |
Re: Datei Handling nach Autostart
Zitat:
|
Re: Datei Handling nach Autostart
Und nebenbei prüft der Code nicht, ob die Datei vorhanden ist, sondern ob sie zum Lesen geöffnet werden kann, das ist ein Unterschied. Was spricht denn gegen FileExists?
|
Re: Datei Handling nach Autostart
@Luckie
Tja, ist wohl richtig. Da das Programm jedoch universell einsetzbar sein soll, brauche ich eine Möglichkeit, den Pfad, in dem es liegt herauszufinden. Wie? @DeddyH Ach herrjeh. Auf die einfachsten Dinge kommt man nicht :oops: |
Re: Datei Handling nach Autostart
Zitat:
Allerdings ist es keine gute Idee, Dateien im Programmverzeichnis abzuspeichern, da eventuell die nötigen Rechte fehlen. |
Re: Datei Handling nach Autostart
ExtractFileDir(paramstr(0))
@Luckie Da er sich augenscheinlich abseits der üblichen Windows-Pfade bewegt, darf er es wohl doch. Gruß K-H |
Re: Datei Handling nach Autostart
Zitat:
|
Re: Datei Handling nach Autostart
Zitat:
Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 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 by Thomas Breitkreuz