Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   TFileCopy error (https://www.delphipraxis.net/214102-tfilecopy-error.html)

HCB 16. Nov 2023 08:07

Delphi-Version: 11 Alexandria

TFileCopy error
 
Hallo,
ein Problem treibt mich hierher, in der Hoffnung Ideen oder Lösungen zu finden.
Ich erstelle ein Verzeichnis, ok. Dann werden Dateien hinein kopiert, ok.
Ein zweiter Rechner (oder eine zweite Instanz vom Programm) startet die App.
Das Verzeichnis mit den vorhandenen Files wird gelöscht, dann neu erstellt, ok.
Jetzt sollen neue Dateien hinein kopiert werden - Jetzt wir ein Fehler ausgeworfen -
und es wird nichts kopiert.

Hier der Code:
try
IsRecursive := true;
if TDirectory.Exists(ExportPfad) then TDirectory.Delete(ExportPfad, IsRecursive);
except
ErrorMsg('Fehler beim Löschen im Verzeichnispfad!',ArchivPfad+#13+ExportPfad,Modul) ;
end;

TDirectory.CreateDirectory((ExportPfad));
if ConfirmMsg('Sollen jetzt die '+IntToStr(DataMod.Q_ReExport.RecordCount)+' Dateien exportiert werden?','') = mrYes
then
begin
DataMod.Q_ReExport.First;
for I:= 1 to DataMod.Q_ReExport.RecordCount do
begin
try
TFile.Copy(ArchivPfad+IntToStr(DataMod.Q_ReExporti d.Value)+'.pdf',ExportPfad+DataMod.Q_ReExportReNum mer.Value+'.pdf');
except
ErrorMsg('Fehler beim Kopieren, Dateiname nicht existent oder Pfad falsch! '+#13+ArchivPfad+IntToStr(DataMod.Q_ReExportid.Val ue)+'.pdf'+#13
+ExportPfad+DataMod.Q_ReExportReNummer.Value+'.pdf '+#13+'Bitte wiederholen.','',Modul);
EXIT;
end;
DataMod.Q_ReExport.next;
end;
end;
end;
end;

Hat jemand eine Idee woran das liegen könnte?

LG Harry

DeddyH 16. Nov 2023 08:47

AW: TFileCopy error
 
Welcher Fehler wird denn geworfen? Übrigens: schließe Delphi-Code doch bitte in die entsprechenden Tags ein [ delphi]Code[ /delphi] (ohne die Leerzeichen), dann ist er viel besser zu lesen.

Jasocul 16. Nov 2023 08:53

AW: TFileCopy error
 
Aus der Online-Hilfe:
Zitat:

Note: Copy raises an exception if the source file does not exist, the paths are invalid, or the user does not have enough privileges to perform the copy operation.
Hast du das bereits genau geprüft?
Du lieferst leider etwas wenig Infos, daher ist es schwierig eine gute Hilfestellung zu geben. Ich könnte mir aber vorstellen, dass du ForceDirectories statt CreateDirectory nehmen musst, da du das Verzeichnis ja auch rekursiv löscht.

DeddyH 16. Nov 2023 09:19

AW: TFileCopy error
 
Es würde ja vielleicht schon weiterhelfen, wenn man die Original-Fehlermeldung der Exception ausgibt:
Delphi-Quellcode:
try
  MachWas;
except
  on E: Exception do
    ShowMessage('Uups, ein Fehler: ' + E.Message);
end;

HCB 16. Nov 2023 09:39

AW: TFileCopy error
 
So wie es aussieht, kann nicht kopiert werden da das Verzeichnis nicht mehr besteht, ob wohl vor der Kopieraktion das neu erstellt werden soll.
Zuerst wird mit
Delphi-Quellcode:
 if TDirectory.Exists(ExportPfad) then TDirectory.Delete(ExportPfad, IsRecursive);
das Verzeichnis mit allen Dateien gelöscht,
danach wird mit
Delphi-Quellcode:
 TDirectory.CreateDirectory((ExportPfad));
das Verzeichnis wieder erstellt.

Aber aus irgendwelchen Gründen wird bei der zweiten Instanz der App dieses Verzeichnis ohne Fehlermeldung NICHT erstellt, somit kann die nachfolgende Kopieraktion nicht ausgeführt werden.
Auch mit
Delphi-Quellcode:
 if forcedirectories(ExportPfad) then ....
geht es nicht.

LG Harry

Jasocul 16. Nov 2023 09:52

AW: TFileCopy error
 
Das klingt jetzt vielleicht ein wenig blöd, aber bist du mit dem Debugger Schritt für Schritt durchgegangen, hast parallel den Datei-Explorer offen für eine Kontrolle (bei jedem Schritt) und dir jede Variable bei jedem Schritt genau angesehen?
Gegebenenfalls solltest du in einem weiteren Explorer den Inhalt der Variablen dort einsetzen.

HCB 16. Nov 2023 10:27

AW: TFileCopy error
 
Mit dem Explorer habe ich überprüft, das Verzeichnis wird gelöscht.
Mit den Variablen probier ich mal aus.
Danke.

noisy_master 16. Nov 2023 10:56

AW: TFileCopy error
 
Moinsen,

für mich klingt das nach einer Race-Condition: Die erste Instanz kopiert noch, während die die zweite Instanz schon versucht das Verzeichnis zu löschen....Hast du mal versucht die zweite Instanz WESENTLICH später zu starten(wenn die erste fertig kopiert hat)?

HCB 16. Nov 2023 14:30

AW: TFileCopy error
 
@noisy_master: Vielen Dank! Ja, ich denke das könnte es gewesen sein. Wenn man eine Weile wartet, scheint das Problem nicht mehr aufzutreten.
Allerdings kam der Fehler nach 8 maligem Probieren wieder. Aber so oft wird die Funktion ja nicht hintereinander aufgerufen.
Trotzdem bin ich nicht ganz zufrieden. Aber ersteinmal muss das so laufen.

An alle anderen hier, Danke!

LG Harry

Benmik 16. Nov 2023 17:08

AW: TFileCopy error
 
Was ich daran nicht verstehe: Diese ganze Datei- oder Verzeichnisoperationen sind doch Funktionen, die den Erfolg zurückmelden. Wenn die Funktion zurückkehrt, dann muss die Operation doch ausgeführt sein? Das Ganze wird doch nicht multithreaded durchgeführt?


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:01 Uhr.
Seite 1 von 2  1 2      

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