![]() |
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:
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.
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; 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. |
Re: FileExists funktioniert nicht richtig
Kann es sein das du keine Rechte hats diese Datei zu lesen ??
|
Re: FileExists funktioniert nicht richtig
Habe ich gerade geguckt: Ich habe Vollzugriff.
Das verrückte ist:
Delphi-Quellcode:
Hier greife ich mit den gleichen Pfad auf die Ini Datei zu und es klappt. Hier funktioniert auch FileExists richtig.
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; |
Re: FileExists funktioniert nicht richtig
Hi,
Zitat:
|
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.
|
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. |
Re: FileExists funktioniert nicht richtig
@Luckie:
Einfach mal Debuggen, dann siehste ja was nicht funktioniert. |
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? |
Re: FileExists funktioniert nicht richtig
An der Leerstelle liegt es auch nicht:
Zitat:
Debuggen ist gut. Das CPU Fenster gibt mir meist mehr Rätsel auf, als dass es mir hilft. :? |
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: |
Re: FileExists funktioniert nicht richtig
Also, ich habs mal schnell probiert:
Delphi-Quellcode:
Wenn die Datei da ist, kommt die ShowMessage, wenn ich die Datei lösche, dann kommt die MessageBox, es läuft also wie es soll. Was mir aufgefallen ist, das Icon der Ini, das hat so ein kleines !, kann es sein das dir da was an Rechten fehlt und/oder die Datei gar nicht gesehen werden will?
procedure TForm1.Button1Click(Sender: TObject);
var s: String; begin // s := ExtractFilepath(ParamStr(0)) + '_appdata' + '\' + 'Watch.ini'; s := 'D:\Downloads\_appdata\Watch.ini'; if not FileExists(s) then begin MessageBox(Handle, 'muh', 'mäh', MB_ICONSTOP); Exit; end else ShowMessage('file da'); end; @Catbytes, hat er ja grad mit D::\Downloads\_appdata\Watch.ini |
Re: FileExists funktioniert nicht richtig
Liste der Anhänge anzeigen (Anzahl: 1)
Bitte sofort alles vergessen. Ihr habt nichts gesehen. Ihr habt nichts gelesen. Ich ziehe jetzt meine Sonnenbrille auf und ihr öffnet mal bitte alle den Anhang hier. Danke.
Es funktioniert alles so wie es soll. Die fehlermeldung kommt an einer anderen Stelle und dort ist sie richtig. Mein Programm arbeitet mit einem anderen zusammen und der Pfad wird in der Ini angegeben, da das programm auf meinem Rechner nicht existiert, liefert FileExists natürlcih korrekterweise False zurück. @Daniel B: Das ist nur das Icon vom Versionskontrollsystem. |
Re: FileExists funktioniert nicht richtig
Schau mal in:
![]() Dort findet sich die Erklärung, weshalb FileExists manchmal False liefert, obwohl die Datei vorhanden ist. PS: Na gut, war nicht die Ursache deines Problems. Aber trotzdem ist FileExists() nicht fehlerfrei. |
Re: FileExists funktioniert nicht richtig
Ich benutze an der Arbeit BDS 2006, also die von dir implementierte Version von FileExists. Beim Debuggen hab eich auch den Aufruf von getFileAttributs gesehen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:46 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