![]() |
[gelöst] DeleteFile und Fehler 123 (falscher Syntax)
Hallo,
ich habe eine Textdatei mit lauter Dateinamen inklusive immer demselben Pfad. Also etwa so
Delphi-Quellcode:
Diese Dateinamen lade ich in eine TStringList, drucke sie und möchte anschließend alles weglöschen
Y:\Post\2009.08.06\_0000.png
Y:\Post\2009.08.06\_0001.png Y:\Post\2009.08.06\_0002.png
Delphi-Quellcode:
Leider bekomme ich jetzt den Fehler mit der Nummer 123 bzw. "Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch". Da ich mir S auch anzeigen lasse, kann ich sehen, dass der Inhalt "Y:\Post\2009.08.06\*.*" ist. Der Pfad und die Dateien existieren. Immerhin sind sie ja auch gedruckt worden.
Uses Windows, SysUtils ...; // <- in genau dieser Reihenfolge
Var S : String; ... DruckJob:=TStringList.Create; Try DruckJob.LoadFromFile(Printpfad+MyName+'.druck'); If Not DeleteFile(Printpfad+MyName+'.druck') Then // <- Das klappt! ShowMessage(SysErrorMessage(GetLastError)); // Hier wird gedruckt // Jetzt sollen alle Bilder gelöscht werden S:=ExtractFilePath(DruckJob.Strings[0])+'*.*'; If Not DeleteFile(S) Then // <- Das klappt NICHT! ShowMessage(SysErrorMessage(GetLastError)+#13+S); Finally DruckJob.Free; End; Was mache ich verkehrt? Zur Erläuterung: Ich benutze DeleteFile(); seit Ewigkeiten und hatte noch nie Probleme damit. Deshalb verstehe ich die Welt nicht mehr. Die Dateien liegen auf den Freigaben eines Servers mit Linux und Samba. Die .druck-Datei liegt übrigens auch dort und kann erfolgreich gelöscht werden! Ich habe ausreichend Rechte und kann die Dateien mit Windows, cmd etc. pp. ohne Probleme bearbeiten, löschen ... Es dankt für Hinweise -> Alex |
Re: DeleteFile und Fehler 123 (Der Syntax ... ist falsch)
In der Dokumentation ist nirgends erwähnt, daß DeleteFile mit Wildcards zurecht kommt...
|
Re: DeleteFile und Fehler 123 (Der Syntax ... ist falsch)
Zitat:
Gibt es eine andere Funktion, die mit Wildcards umgehen kann? Die Listen können bei mir sehr lang werden und dann dauert es ewig. Danke schon einmal, Alex |
Re: DeleteFile und Fehler 123 (Der Syntax ... ist falsch)
|
Re: DeleteFile und Fehler 123 (Der Syntax ... ist falsch)
Wieso verwendest du keine For-Schleife?
Delphi-Quellcode:
EDIT: Gehts hier wirklich um .NET?
var
i: Integer; begin ... for i := 0 to DruckJob.Count -1 do DeleteFile(DruckJob[i]); end; |
Re: DeleteFile und Fehler 123 (Der Syntax ... ist falsch)
die .druck-Datei liegt im selben Ordner?
dann kannst du per SHFileOperation auch gleich alles zusammen löschen Printpfad+MyName+'*.*' denn wenn .druck und die Dateien in dieser Datei alle auf den selben Ornder zeigen und du dann eh nur von der ersten Datei den Pfad, zussammen mit *.* nutzt, dann kommt es am Ende auch wieder nur auf den oben genannten Pfad raus. Aber wenn noch andere Dateien/Bilder zur selben Zeit in diesem Ordner sein können, dann solltest du wohl besser etwas wie von Andreas L. Vorgeschlagenes verwenden, bevor zuviel gelöscht wird. PS: FindFirst/FindNext + DeleteFile wäre auch gegangen ... Ersteres versteht Masken und liefert einzelne Dateien, welche DeleteFile wiederrum mag. |
Re: DeleteFile und Fehler 123 (Der Syntax ... ist falsch)
Danke für Eure Tipps!
@ Andreas L. Zitat:
Delphi-Quellcode:
For I:=0 To Pred(DruckJob.Count) Do
If Not DeleteFile(DruckJob.Strings[I]) Then Application.MessageBox(PAnsiChar(SysErrorMessage(GetLastError)),'Fehler',0); {$I-}rmdir(ExtractFilePath(DruckJob.Strings[0]));{$I+} If IOResult<>0 Then Application.MessageBox(PAnsiChar(SysErrorMessage(GetLastError)),'Fehler',0); Zitat:
@ himitsu Die Dateien liegen nicht im selben Ordner. Ich habe von SHFileOperation auch Abstand genommen, weil es nicht Plattformübergreifend ist. Und das Bestücken der Variablen ist auch komplizierter; selbst wenn es später schneller sein mag. FindFirst ist eine gute Idee. Zwar liefert TSearchRec.Name nur die Dateinamen ohne Pfad und ich habe beides schon in meiner Liste. Aber ich könnte so noch prüfen, ob wirklich alles leer ist, bevor ich das Verzeichnis lösche. Danke, Alex |
Re: DeleteFile und Fehler 123 (Der Syntax ... ist falsch)
Zitat:
False = könnte nicht gelöscht werten (z.B. Verzeichnis existiert nicht oder noch irgendwas drin) |
Re: DeleteFile und Fehler 123 (Der Syntax ... ist falsch)
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 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