![]() |
DeleteFiles + FindNext
Ich möchte alle *.txt Dateien in einem bestimmten Ordner in C:\... löschen.
Mein Code:
Delphi-Quellcode:
Mein Problem:
procedure TFmDeleteVocabularies.BtDeleteVoksClick(Sender: TObject);
var //Variablen für die Schleife SearchRec: TSearchRec; r: Integer; //Variablen Ende begin MeDelVoks.Clear; MeDelVoks.Lines.Add('Folgende Dateien wurden gefunden: '); //Schleife r := FindFirst('C:\voctester_tmp\Vocabularies\Deutsch\*.TXT', faAnyFile,SearchRec); while r = 0 do begin MeDelVoks.Lines.Add(SearchRec.Name); DeleteFile(SearchRec.Name); r := FindNext(SearchRec); end; FindClose(SearchRec); ShowMessage('Dateien wurden gelöscht'); //Schleife Ende end; Es geschieht einfach nichts! Pfad hab ich schon überprüft. Kann mir jemand helfen? Mfg Ghost |
Re: DeleteFiles + FindNext
Warum überprüfst du den Rückgabewert von DeleteFile nicht? Und guck doch mal was in SearchRec.Name steht. dann findest du deinen Fehler auch selber.
Delphi-Quellcode:
Und dann guck mal, was da steht.
if not DeleteFile(...) then
ShowMessage(SysErrorMessage(GetLastError)); |
Re: DeleteFiles + FindNext
Danke für die schnelle Antwort. "System kann die Datei nicht finden."
Der Dateipfad stimmt! Hat es dann etwas damit zu tun, dass ich nicht SearchRec.Name benutzen darf? Aufgelistet wird SearchRec.Name so zB.: Hallo.TXT ... Wie überprüft man den SearchRec.Name? Das ist doch der Name der gefundenen Datei, wenn ich micht nicht irre.? |
Re: DeleteFiles + FindNext
Richtig, der Name der Datei. Und wo ist der Pfad?
|
Re: DeleteFiles + FindNext
Ich habs so verstanden:
Delphi-Quellcode:
Also oben hab ich den Pfad angegeben und zwar so, das alle Textdateien gemeint sind.
r := FindFirst('C:\voctester_tmp\Vocabularies\Deutsch\*.TXT', faAnyFile,SearchRec);
<-- Hier gibt man den Pfad an while r = 0 do begin MeDelVoks.Lines.Add(SearchRec.Name); DeleteFile(SearchRec.Name); {Error Code?} if not DeleteFile(SearchRec.Name) then ShowMessage(SysErrorMessage(GetLastError)); <-- Hier entscheidet man was mit jeder gefundenen Datei geschieht. {Weiter zur nächsten Datei} r := FindNext(SearchRec); end; War das falsch? |
Re: DeleteFiles + FindNext
Und wo ist er bei DeleteFile? Die Fehlermeldung hat dir doch schon gesagt, dass die Datei nicht gefunden wurde. Rat mal warum.
|
Re: DeleteFiles + FindNext
Ja deswegen hab ich den Pfad doch oben angegeben. Damit er für ALLE Dateien gilt.
Muss ich den Code so ändern?:
Delphi-Quellcode:
DeleteFile('C:\voctester_tmp\Vocabularies\Deutsch\*.TXT');
|
Re: DeleteFiles + FindNext
Zitat:
Knapp da neben ist auch vorbei. Probiere es aus. |
Re: DeleteFiles + FindNext
DeleteFile('C:\voctester_tmp\Vocabularies\Deutsch\ *.TXT' +SearchRec.Name);?
Edit: nein klappt nicht ... |
Re: DeleteFiles + FindNext
Delphi-Quellcode:
€: Dein
DeleteFile('C:\voctester_tmp\Vocabularies\Deutsch\' +SearchRec.Name);
Delphi-Quellcode:
würde z.B. C:\voctester_tmp\Vocabularies\Deutsch\*.TXTTest.tx t ausgeben...
DeleteFile('C:\voctester_tmp\Vocabularies\Deutsch\*.TXT' +SearchRec.Name);
€²: Wir hams wohl beide verraten ;D |
Re: DeleteFiles + FindNext
.. ohne das *.TXT darin sollte es funktionieren.
Grüße Klaus |
Re: DeleteFiles + FindNext
Nicht raten! Nachdenken!
Was kommt dabei wohl raus:
Delphi-Quellcode:
Was steht in SearchRec.name drin? Und wie sieht deine zusammengebastelte Zeichenkette dann aus?
DeleteFile('C:\voctester_tmp\Vocabularies\Deutsch\*.TXT' +SearchRec.Name)
Zitat:
|
Re: DeleteFiles + FindNext
Delphi-Quellcode:
Klappt aber nicht.r := FindFirst('C:\voctester_tmp\Vocabularies\Deutsch\*.TXT', faAnyFile,SearchRec); while r = 0 do begin MeDelVoks.Lines.Add(SearchRec.Name); DeleteFile(SearchRec.Name+'C:\voctester_tmp\Vocabularies\Deutsch\'); {Error Code?} if not DeleteFile(SearchRec.Name) then ShowMessage(SysErrorMessage(GetLastError)); Danke euch allen ich suche morgen weiter ;) @Luckie: Danke für deine Geduld und deine Strategie ;D |
Re: DeleteFiles + FindNext
okay nochmal:
SearchRec.Name ist der Name der Datei, die zum löschen gefunden wurde, und zwar ohne Pfad davor. => Schlussfolgerung: Du brauchst die Angabe des Pfadest und danach dann noch den Namen der Datei. |
Re: DeleteFiles + FindNext
wie sind denn Dateien zu finden:
Pfad + Dateiname oder Dateiname + Pfad ? So spät ist es in Deutschland doch noch nicht. Grüße Klaus |
Re: DeleteFiles + FindNext
Zitat:
Zitat:
Zitat:
|
Re: DeleteFiles + FindNext
Ist ja in Ordnung ich ärgere mich schon über meine eigene Dummheit! Ich hab bis zum Ende nicht verstanden das in SearchRec.Name der Name der Datei + .TXT steht. Und dann musste ich schnell weg sodass ich nicht mal mehr den Pfad und den Namen in eine passende Reihenfolge geschrieben hab O.o! Ich hoffe ich hab eurer Geduld nicht allzusehr geschadet ;D Mfg Ghost
|
Re: DeleteFiles + FindNext
Hast du es jetzt hinbekommen?
|
Re: DeleteFiles + FindNext
Ich bin im Moment nicht in der Lage es zu probieren aber in der Theorie habe ich es so verstanden: DeleteFile('C:\'+SearchRec.Name) Das könnte ergeben: C:\Hallo.TXT! Edit: In SearchRec.Name steht der Name der Datei und die Endung. Mit GetLastError bekommt man den Wert von DeleteFile (True/False) zurück.
|
Re: DeleteFiles + FindNext
richtig
[OT] fands sau lustig wie sich zeitweise 3 personen drum gekloppt ham's dem TE richtig beizubringen und die Antworten im Sekundentakt rausgehaun ham ;D [/OT] |
Re: DeleteFiles + FindNext
Richtig. Aber in welchen Pfad liegt deine Datei, die du löschen willst?
|
Re: DeleteFiles + FindNext
öhm mein eigener Pfad? Das war doch C:\voctester_tmp\Vocabularies...\ ! Oder meinst du wieder etwas anderes als ich denke?
|
Re: DeleteFiles + FindNext
Richtig. In dem Pfad wurde die Datei gefunden. Und jetzt kombinieren wir einfach die bisher gewonnenen Erkenntnisse:
1. DeleteFile braucht den kompletten Pfad und den Dateinamen 2. In SearchRec.Name steht der Dateiname 3. Dein Pfad ist C:\voctester_tmp\Vocabularies...\ 4. Der Dateiname steht am Ende vom Pfad 5. Zeichenketten verbindet man mit einem + Wie muss jetzt der Aufruf von DeleteFile aussehen? |
Re: DeleteFiles + FindNext
DeleteFile('C:\voctester_tmp\Vocabularies\Deutsch\ '+SearchRec.Name);
|
Re: DeleteFiles + FindNext
:cheer:
|
Re: DeleteFiles + FindNext
Es geschehen noch Zeichen und Wunder. :cheer:
|
Re: DeleteFiles + FindNext
danke.
|
Re: DeleteFiles + FindNext
Jetzt brauche ich aber erstmal eine Pause.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:16 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