![]() |
Merkwürdiger Fehler, TStringlist.SaveToFile
Hallo zusammen,
ich habe seit heute einen ganz merkwürdigen Fehler. Ein TStringlist.SaveToFile funktioniert nicht mehr.
Delphi-Quellcode:
Die Methode SaveToFile erzeugt den Fehler in der Unit System.SysUtils.
var
MeineListe: TStringlist; begin MeineListe := TStringlist.Create; MeineListe.Add('xxx'); MeineListe.SaveToFile( 'D:\temp\TSE\Bu2006839.input.tse'); function FileCreate(const FileName: string; Mode: LongWord; Rights: Integer): THandle; zeile Result := CreateFile(PChar(FileName), GENERIC_READ or GENERIC_WRITE, ShareMode[(Mode and $F0) shr 4], nil, Exclusive[(Mode and $0004) shr 2], FILE_ATTRIBUTE_NORMAL, 0); Die Meldung lautet: "D:\entwXE\Sopha\bin\ D:\temp\TSE\Bu2006839.input.tse" kann nicht erstellt werden. Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch. Wobei der erste Teile der Pfad ist, in dem die exe-Datei liegt und der zweite Teil die eigentliche Datei die geschrieben werden soll. Wer oder Wo ändert den Dateinamen?? Hier ist noch Delphi 10.3.3 mit Windows 10 Enterprise (regelmäßige Updates) Letzte Woche ging noch alles. Hat jemand einb ähnliches Verhalten bemerkt? Wondows Update vielleicht? Viele Grüße Thomas |
AW: Merkwürdiger Fehler, TStringlist.SaveToFile
Hallo,
Delphi-Quellcode:
Ist das wirklich die korrekte Zeile?
MeineListe.SaveToFile( 'D:\temp\TSE\Bu2006839.input.tse');
Oder eher MeineListe.SaveToFile('_D:\temp\TSE\Bu2006839.inpu t.tse'); Wobei _ ein Leerzeichen ist. Existiert D:\Temp, zur Not mal das Verzeichnis löschen und neu anlegen. |
AW: Merkwürdiger Fehler, TStringlist.SaveToFile
Moin...:P
Zitat:
Bei mir war es ein nicht verbundes Laufwerk. :roll: PS: StringList funktioniert immer. :zwinker: |
AW: Merkwürdiger Fehler, TStringlist.SaveToFile
Liste der Anhänge anzeigen (Anzahl: 1)
|
AW: Merkwürdiger Fehler, TStringlist.SaveToFile
Es sind keine Leerzeichen oder falsche Laufwerke drin.
Ich werde nun mal ein kleines Testprogramm schreiben. Das Original ist sehr groß. |
AW: Merkwürdiger Fehler, TStringlist.SaveToFile
Testprogramm steht doch schon in Post #1 :)
|
AW: Merkwürdiger Fehler, TStringlist.SaveToFile
Hallo,
die "exception message" ist unvollständig. Sieht aus wie ein kaputter String, der dazu führt, dass Delphi einen relativen Pfad annimmt. bin\ D: Und ich sehe trotzdem ein Leerzeichen... |
AW: Merkwürdiger Fehler, TStringlist.SaveToFile
Das ist die Meldung(Exception) die im MadExcept steht.
Der Dateiname ist: 'D:\name usw.'. Die Fehlermeldung lautet: "D:\bin D:\name usw." "D:\bin" ist der Pfad der exe-Datei dann ein Leerzeichen dann der Dateiname, den ich übergebe ----------------- Das Testprogramm läuft. Mit den identischen Dateiname und Pfaden. Die Ursache muss woanders liegen. Trotzdem, Es wird ein CreateFile mit korrektem Parameter aufgerufen und aus der Windows API kommt der Fehler |
AW: Merkwürdiger Fehler, TStringlist.SaveToFile
Vielleicht vor Deinem SaveTo ein SetCurrentDir oder ChDir durchführen? (Wobei es bei meinen Versuchen Wurst ist...)
|
AW: Merkwürdiger Fehler, TStringlist.SaveToFile
Gefunden. Es war tatsächlich ein Leerzeichen schuld.
Die Pfadangebe wurde aus der Datenbank gelesen. Anschließend mit "IncludeTrailingPathDelimiter" erweitert. Diese Funktion kontrolliert nicht, ob es ein gültiger Pfad ist, sondern hängt einfach ein Backslash dran. Bei meinen ersten Tests ahbe ich natürlich immer den Pfad genutzt. Fragt mich nicht wieso. Er sah ja optisch richtig aus. Hätte die Exception nicht so eine blöde Meldung gegeben, hätte ich wahrscheinlich sofort gesehen. Aber mit dieser Meldung habe ich an den falschen Stellen gesucht. Warum wird dabei der aktuelle Ordner mit angegeben? In der Meldung habe ich das Leerzeichen natürlich gesehen. Es aber nicht dem Pfad zugeschrieben. Vielleicht war es auch einfach nur die morgendliche Blindheit. Danke trotzdem. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:24 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