![]() |
Dateien kopieren - Test ob vorhanden, bzw. in Gebrauch
Hallo,
ich habe folgendes Problem: Ich lese in eine Listbox Dateinamen inkl. Verzeichnis ein und möchte diese Einträge "später" als Basis für einen Kopiervorgang nutzen: for i:=1 to listbox1.count do begin // COD-Datei - gemäß Auswahl - einlesen // Kopieren der ausgewählten Datei ins TEMP-Verzeichnis FilePathA := listbox1.items.strings[i-1]; // Pfad der zu kopierenden Datei inkl. Dateiname! FilePathB := temp_pfad+extractfilename(listbox1.items.strings[i-1]); // Zielpfad inkl Dateiname! if DirectoryExists(ExtractFileDir(FilePathB)) and not IsFileInUse(FilePathA) then begin mem := TMemoryStream.Create; try mem.LoadFromFile(filepathA); mem.SaveToFile(filepathB); finally mem.Free; end; end; if fileexists(FilePathB) then // Zieldatei erfolgreich ins TEMP-Verzeichnis kopiert und für Auswertung bereit? begin ... Es treten E/A Fehlermeldungen auf bzw. ein Fenster wird angezeigt mit dem Hinweis, dass die Datei nicht (zum kopieren?) geöffnet wurde, wenn das Verzeichnis zwischenzeitlich umbenannt/gelöscht oder die Datei gelöscht wurde! Meine Frage wie und an welcher Stelle unterdrücke ich diese Hinweisfenster - das Programm soll einfach diese Datei/das Verzeichnis dann einfach NICHT berücksichtigen und mit der nächsten Datei/Verzeichnis fortfahren! Gruß, Heinz |
Re: Dateien kopieren - Test ob vorhanden, bzw. in Gebrauch
Hallo!
Das hängt von Deinem Kopiervorgang ab. Kopierst Du mittels FileStreams oder über BlockRead/Blockwrite? 1. Bei FileStreams schau Dir mal in der Hilfe den Try...Except-Block an. Hier ein KLEINES Beispiel:
Delphi-Quellcode:
Speicher freigeben (quelldatei.free; ...)habe ich mal weggelassen - aber vergiß das nicht :-)
for i := 0 to listbox1.count-1 do BEgin;
try quelldatei := TFileStream.Create(ListBox.Items[i], fmOpenRead or fmShareDenyNone); zieldatei := TFileSttream.Create(Zielpfad+ListBox1.Items[i], fmCreate); zieldatei.copyfrom(quelldatei, quelldatei.size); except // hier z.B. Hinweis in eine Logdatei schreiben daß Fehler aufgetreten end; {try..except} end; {for} Wenn Du den Fehler noch genauer lokalisieren möchtest dann müsstest Du IMHO entweder den Fehler im Except-Block näher auslesen oder den Try-Except-Block schachteln. 2. Bei Assign(f, ...) und anschließendem BlockRead (...) könnte Dir der Compilterschalter {$I-} / {$I+} zusammen mit "if ioResult..." weiterhelfen. Ebenfalls in der Hilfe nachschauen Hoffe Dir einen Anstoß gegeben zu haben... // EDIT: Habe erst beim 2. mal hinschauen gesehen, daß Du tatsächlich Streams benutzt. Also ignoriere meine 2. Antwort einfach. Ich lasse sie vollständigkeitshalber aber mal stehen... SCRaT |
Re: Dateien kopieren - Test ob vorhanden, bzw. in Gebrauch
super vielen Dank - jetzt funktioniert es!
|
Re: Dateien kopieren - Test ob vorhanden, bzw. in Gebrauch
:thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 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