![]() |
EFOpenError findet Datei nicht
Hallo,
bei folgender Funktion bekomme ich eine EFOpenError-Fehlermeldung, obwohl der Pfad für meinen PC 100% stimmt. Dass ich den noch mit einer "SHGetSpecialFolderPath Function" oder "SHGetFolderPath Function" habe ich nach einiger Recherche schon herausgefunden, allerdings soll es ja erstmal überhaupt klappen, bevor ich es allgemein gestalte. Frage: Wieso kann er die Datei "Spionageberichte.txt" nicht öffnen, obwohl der Pfad eindeutig stimmt?
Delphi-Quellcode:
function LadeSpio(Pfad: string): String;
var Spio: TStringList; begin Spio := TStringList.Create; try try Spio.LoadFromFile('F:\Eigene Dateien\Ordner1\' + Pfad + '\Spionageberichte.txt'); except Showmessage('Fehler (01). Bei Fragen bitte an den Support wenden.' + #13 + 'Die Datei ist nicht vorhanden. Bitte eventuell den Dateipfad nachprüfen.'); end; finally Spio.Free; end; result := Spio.text; end; Vielen Dank für eure Mühe. |
Re: EFOpenError findet Datei nicht
Das könnte daran liegen das du via
Delphi-Quellcode:
auf Spio zugreifst obwohl du vorher schon
result := Spio.text;
Delphi-Quellcode:
aufgerufen hast.
Spio.Free
[EDIT] Wie sollte der Pfad zur Datei eigentlich wirklich bei dir aussehen? Weil so wie es im Moment aussieht vermischt du deinen festen Pfad mit einer Variable was in diesem Fall auch in die Hose gehen könnte. |
Re: EFOpenError findet Datei nicht
Ruft er das nicht nur auf, wenn das "Try" erfolglos war?
Außerdem habe ich es gerade mal ohne probiert, aber es kam die selbe Fehlermeldung. Das war's wohl leider nicht. :( Also "Pfad" ist ein variabler Ordnername, den ich in einem TEdit-Feld eingeben kann. Beispielsweise: "Spieler1". Dann wäre der komplette Pfad: "F:\Eigene Dateien\Ordner1\Spieler1\Spionageberichte\Spionage bericht.txt" Aber gerade, wo ich das schreibe, merke ich, dass ich ein "Spionageberichte" zu wenig eingefügt hatte. Oh mann, dabei habe ich den Pfad extra drei Mal überprüft. Vielen Dank, du hast mich gewaltsam mit der Nase draufgestoßen. ;p [Edit] Soll ich für eine neue Frage (zum SHGetFolderPath) jetzt eigentlich ein neues Thema eröffnen oder kann ich hier weiterfragen? :) |
Re: EFOpenError findet Datei nicht
Du hast mindestens zwei Fehler in deinem Code.
Fehler 1: wenn du einen Dateinamen aus mehreren Teilen zusammensetzt, dann achte darauf, dass es immer eine Zwischenvariable gibt.
Delphi-Quellcode:
Nur mit der Zwischenvariable kannst du herausfinden, ob der Dateiname inkl. Pfad wirklich in Ordnung ist
function LadeSpio(Pfad: string): String;
var Spio: TStringList; dateiname:string; begin dateiname := 'F:\Eigene Dateien\Ordner1\' + Pfad + '\Spionageberichte.txt'; Fehler 2: deine Fehlermeldung ist ziemlich "gaga". Gib dem Benutzer eine Fehlermeldung mit der er auch wirklich etwas anfangen kann. Zwingend notwendig wäre hier der volle Dateiname!
Delphi-Quellcode:
try
Spio.LoadFromFile(dateiname); except on E:Exception do begin E.Message := 'Spionagebericht kann nicht geladen werden'#13#10+ 'Die Datei '+dateiname+' ist nicht vorhanden. Bitte eventuell den Dateipfad nachprüfen.'#13#10+ E.Message; raise; end; end; |
Re: EFOpenError findet Datei nicht
Hm, stimmt! Das hätte mir die Fehlersuche mithilfe von F8 wohl erleichtert. Werde drauf achten, vielen Dank.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 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