AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi [gelöst] DeleteFile und Fehler 123 (falscher Syntax)
Thema durchsuchen
Ansicht
Themen-Optionen

[gelöst] DeleteFile und Fehler 123 (falscher Syntax)

Ein Thema von Schwedenbitter · begonnen am 6. Aug 2009 · letzter Beitrag vom 6. Aug 2009
Antwort Antwort
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#1

[gelöst] DeleteFile und Fehler 123 (falscher Syntax)

  Alt 6. Aug 2009, 11:24
Hallo,

ich habe eine Textdatei mit lauter Dateinamen inklusive immer demselben Pfad. Also etwa so
Delphi-Quellcode:
Y:\Post\2009.08.06\_0000.png
Y:\Post\2009.08.06\_0001.png
Y:\Post\2009.08.06\_0002.png
Diese Dateinamen lade ich in eine TStringList, drucke sie und möchte anschließend alles weglöschen
Delphi-Quellcode:
 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;
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.

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
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#2

Re: DeleteFile und Fehler 123 (Der Syntax ... ist falsch)

  Alt 6. Aug 2009, 11:36
In der Dokumentation ist nirgends erwähnt, daß DeleteFile mit Wildcards zurecht kommt...
Uwe Raabe
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: DeleteFile und Fehler 123 (Der Syntax ... ist falsch)

  Alt 6. Aug 2009, 12:12
Zitat von Uwe Raabe:
In der Dokumentation ist nirgends erwähnt, daß DeleteFile mit Wildcards zurecht kommt...
Toll das wars.

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
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: DeleteFile und Fehler 123 (Der Syntax ... ist falsch)

  Alt 6. Aug 2009, 12:22
Hier im Forum suchenSHFileOperation.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#5

Re: DeleteFile und Fehler 123 (Der Syntax ... ist falsch)

  Alt 6. Aug 2009, 12:57
Wieso verwendest du keine For-Schleife?

Delphi-Quellcode:
var
  i: Integer;
begin
  ...
  for i := 0 to DruckJob.Count -1 do
    DeleteFile(DruckJob[i]);
end;
EDIT: Gehts hier wirklich um .NET?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

Re: DeleteFile und Fehler 123 (Der Syntax ... ist falsch)

  Alt 6. Aug 2009, 13:34
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.
$2B or not $2B
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: DeleteFile und Fehler 123 (Der Syntax ... ist falsch)

  Alt 6. Aug 2009, 14:16
Danke für Eure Tipps!

@ Andreas L.
Zitat von Andreas L.:
Wieso verwendest du keine For-Schleife?
Mache ich ja jetzt. Mein funktionierender Code sieht jetzt so aus:
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 von Andreas L.:
EDIT: Gehts hier wirklich um .NET?
Ich habe keine Ahnung. Ich habe bereits mehrfach versucht, mich mal im Delphidschungel zurecht zu finden und habe es dann aufgegeben. Ich habe TurboDelphi (gemeldet als Version 10) und mein in die Jahre gekommenes Delphi 6. Für TurboDelphi musste ich alles mögliches mit .NET installieren. Daher stammt meine Einordnung. Falls jemand einen Link mit entsprechendem Überblick hat, wäre ich dankbar. Mir geht es auch darum, welches Delphi nativ PNG unterstützt.

@ 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
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#8

Re: DeleteFile und Fehler 123 (Der Syntax ... ist falsch)

  Alt 6. Aug 2009, 14:30
Zitat von Schwedenbitter:
Aber ich könnte so noch prüfen, ob wirklich alles leer ist, bevor ich das Verzeichnis lösche.
brauchst'e nicht ... rmdir löscht nur leere Verzeichnisse, als wenn du da einfach das Result prüfst True = wurde gelöscht
False = könnte nicht gelöscht werten (z.B. Verzeichnis existiert nicht oder noch irgendwas drin)
$2B or not $2B
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#9

Re: DeleteFile und Fehler 123 (Der Syntax ... ist falsch)

  Alt 6. Aug 2009, 15:23
Zitat von Schwedenbitter:
Zitat von Andreas L.:
EDIT: Gehts hier wirklich um .NET?
Ich habe keine Ahnung. Ich habe bereits mehrfach versucht, mich mal im Delphidschungel zurecht zu finden und habe es dann aufgegeben. Ich habe TurboDelphi (gemeldet als Version 10) und mein in die Jahre gekommenes Delphi 6. Für TurboDelphi musste ich alles mögliches mit .NET installieren. Daher stammt meine Einordnung. Falls jemand einen Link mit entsprechendem Überblick hat, wäre ich dankbar. Mir geht es auch darum, welches Delphi nativ PNG unterstützt.
Delphi 6 ist Win32. Von Turbo Delphi gibt es sowohl eine Win32 als auch eine Version für .NET. Delphi 2009 unterstützt PNG. Wobei es aber für Turbo Delphi und auch für Delphi 6 einige gute PNG-Komponenten gibt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz