AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TFileCopy error

Ein Thema von HCB · begonnen am 16. Nov 2023 · letzter Beitrag vom 17. Nov 2023
Antwort Antwort
Seite 1 von 2  1 2      
HCB

Registriert seit: 12. Feb 2020
136 Beiträge
 
Delphi 12 Athens
 
#1

TFileCopy error

  Alt 16. Nov 2023, 08:07
Delphi-Version: 11 Alexandria
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: TFileCopy error

  Alt 16. Nov 2023, 08:47
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.338 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: TFileCopy error

  Alt 16. Nov 2023, 08:53
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.
Peter
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: TFileCopy error

  Alt 16. Nov 2023, 09:19
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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
HCB

Registriert seit: 12. Feb 2020
136 Beiträge
 
Delphi 12 Athens
 
#5

AW: TFileCopy error

  Alt 16. Nov 2023, 09:39
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  if TDirectory.Exists(ExportPfad) then TDirectory.Delete(ExportPfad, IsRecursive); das Verzeichnis mit allen Dateien gelöscht,
danach wird mit  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  if forcedirectories(ExportPfad) then .... geht es nicht.

LG Harry
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.338 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: TFileCopy error

  Alt 16. Nov 2023, 09:52
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.
Peter
  Mit Zitat antworten Zitat
HCB

Registriert seit: 12. Feb 2020
136 Beiträge
 
Delphi 12 Athens
 
#7

AW: TFileCopy error

  Alt 16. Nov 2023, 10:27
Mit dem Explorer habe ich überprüft, das Verzeichnis wird gelöscht.
Mit den Variablen probier ich mal aus.
Danke.
  Mit Zitat antworten Zitat
noisy_master

Registriert seit: 17. Jun 2009
Ort: Wolfenbüttel/Baddeckenstedt
255 Beiträge
 
Delphi XE5 Professional
 
#8

AW: TFileCopy error

  Alt 16. Nov 2023, 10:56
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)?
Dirk
  Mit Zitat antworten Zitat
HCB

Registriert seit: 12. Feb 2020
136 Beiträge
 
Delphi 12 Athens
 
#9

AW: TFileCopy error

  Alt 16. Nov 2023, 14:30
@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
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
542 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: TFileCopy error

  Alt 16. Nov 2023, 17:08
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?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 08:56 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