Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   FileExists funktioniert nicht richtig (https://www.delphipraxis.net/77066-fileexists-funktioniert-nicht-richtig.html)

Luckie 14. Sep 2006 10:01


FileExists funktioniert nicht richtig
 
Liste der Anhänge anzeigen (Anzahl: 1)
So sieht es zu mindest für mich aus. Oder ich bin im Moment total blind:
Delphi-Quellcode:
  s := ExtractFilepath(ParamStr(0)) + '_appdata' + '\' + 'Watch.ini';
  s := 'D:\Projekte Datawerk\PMD\trunk\Watch\~bin\_appdata\Watch.ini';
  if not FileExists(s) then
  begin
    MessageBox(Handle, PChar(Format(rsFileNotFound, [s])), PChar(APPNAME), MB_ICONSTOP);
    Exit;
  end;
Im Screenshot die Situation. Wie man sieht liegt die Datei Watch.ini im Verzeichnis "D:\Projekte Datawerk\PMD\trunk\Watch\~bin\_appdata", aber trotzdem gibt FileExists False zurück und die Messagebox wird angezeigt.

Attribut der Datei ist "A", also weder System noch Hidden, was eventuell zu Problemen führen könnte. Und mit einem Texteditor kann ich sie auch öffnen, es gibt sie also offensichtlich. Was ist da los?

Auf dem Kundenrechner habe ich die gleiche Konstellation, dass die Ini-Datei im Unterverzeichnis _appdata liegt und da funktioniert es - sogar auf einem Netzlaufwerk. Nur hier auf meinem Rechner funktioniert es nicht. Ich verstehe das nicht.

franktron 14. Sep 2006 10:06

Re: FileExists funktioniert nicht richtig
 
Kann es sein das du keine Rechte hats diese Datei zu lesen ??

Luckie 14. Sep 2006 10:09

Re: FileExists funktioniert nicht richtig
 
Habe ich gerade geguckt: Ich habe Vollzugriff.

Das verrückte ist:
Delphi-Quellcode:
ini := TIniFile.Create(ExtractFilepath(ParamStr(0)) + '_appdata' + '\' + 'Watch.ini');
  try
    XMLFile := ini.ReadString('Settings', 'XMLFile', '');
  finally
    FreeAndNil(ini);
  end;
  if not FileExists(XMLFile) then
  begin
    MessageBox(Handle, PChar(Format(rsFileNotFound, [s])), PChar(APPNAME), MB_ICONSTOP);
    Exit;
  end;
Hier greife ich mit den gleichen Pfad auf die Ini Datei zu und es klappt. Hier funktioniert auch FileExists richtig.

Catbytes 14. Sep 2006 10:29

Re: FileExists funktioniert nicht richtig
 
Hi,

Zitat:

Zitat von Luckie
Delphi-Quellcode:
  s := ExtractFilepath(ParamStr(0)) + '_appdata' + '\' + 'Watch.ini';
  s := 'D:\Projekte Datawerk\PMD\trunk\Watch\~bin\_appdata\Watch.ini';

Wieso wird 's' zweimal ein Wert zugewiesen?

Luckie 14. Sep 2006 10:33

Re: FileExists funktioniert nicht richtig
 
Die zweite Zuweisung war nur zum Testen, ob es mit ExtratFilepath irgendwie Probleme geben könnte. Aber hardgecodet funktioniert es ja auch nicht.

brechi 14. Sep 2006 10:34

Re: FileExists funktioniert nicht richtig
 
Warm wohl?

Weil eigentlich das 1. benutzt werden sollte, aber zu Testzwecken der direkte Pfad eingegeben wurde. Damit sollte es ja 100% klappen, weil so Fehler in paramstr und extractfilepath ausgeschlossen werden. Ausserdem wird das 1. ignoriert wenn bei den Compilereinstellungen die Optimierung eingestellt ist.
Man könnte es also auch weglassen, trotzdem müsste es funktionieren.

brechi 14. Sep 2006 10:37

Re: FileExists funktioniert nicht richtig
 
@Luckie:
Einfach mal Debuggen, dann siehste ja was nicht funktioniert.

Daniel B 14. Sep 2006 10:37

Re: FileExists funktioniert nicht richtig
 
Kann es sein das die Leerstelle nach Project ein Problem macht und du den Pfad in "" setzen musst?
Und warum schriebst du nicht appdata + \ Watch.ini nicht in einem ruck?

Luckie 14. Sep 2006 10:45

Re: FileExists funktioniert nicht richtig
 
An der Leerstelle liegt es auch nicht:
Zitat:

Datei D:\Downloads\_appdata\Watch.ini konnte nicht gefunden werden.
Pfad existiert und Datei liegt auch in dem Ordner.

Debuggen ist gut. Das CPU Fenster gibt mir meist mehr Rätsel auf, als dass es mir hilft. :?

Catbytes 14. Sep 2006 11:00

Re: FileExists funktioniert nicht richtig
 
Und wenn Du mal alles weg läßt, was irgendwie "komisch" sein könnte? Also ohne Unterstrich, Tilde etc.

Probiers doch einfach mal mit d:\demo\watch.ini

Funktioniert wenigstens das?

[Edit] [OT] - *LOL* Das mit MiB unten muß ich mir merken - der war gut :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:26 Uhr.
Seite 1 von 2  1 2      

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