Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Datei wird mit CopyFile fehlerhaft kopiert (https://www.delphipraxis.net/179617-datei-wird-mit-copyfile-fehlerhaft-kopiert.html)

HPB 20. Mär 2014 07:18

Datei wird mit CopyFile fehlerhaft kopiert
 
Guten Delphianer,
ich erstelle mit pDFFactory ein PdfDruck im Hintergrund.
Das gelingt auch sehr gut. Da es sich um Rechnungen handelt,
sollen die erzeugten Drucke jeweils in unterscheidliche Ordner mit
unterschiedlichen Namen gespeichert werden.
Dazu nutze ich den Befehl:
Delphi-Quellcode:
pQuellDatei := 'd:\Rechnungen\unbenannt.pdf'; // wird von pdfFactory erzeugt
pZielDatei := 'd:\kundenrechnungen\meyer\rechnung-nr-11456.pdf'; // wird später immer unterschiedlich sein
CopyFile(pChar(pQuellDatei), PCahr(pZielDatei), False);
.
Die Datei wird auch in das angegebene Verzeichnis kopiert.
Will ich aber die kopierte Datei öffnen, so bekomme ich vom AcrobatReader als
auch vom Nitro-Reader, die Fehlermeldung: Die Datei ist beschädigt und kann nicht geöffnet werden.
Die von pdfFactory erzeugte Datei "unbenannt.pdf" lässt sich Fehlerfrei öffnen.

Auch das Kopieren über die entsprechende Komponente 'TJvSHFileOperation' von JEDI gelingt,
es wird jedoch beim Aufrufen der gleiche Fehler ausgegeben.

Was läuft hier falsch? Muss ich vielleicht einen anderen Befehl nehmen?

Vielen Dank für Eure Mühen und Hilfen im Voraus
HPB

Lemmy 20. Mär 2014 07:24

AW: Datei wird mit CopyFile fehlerhaft kopiert
 
Guten Morgen,

da Dateien kopieren unter Windows erst mal grundsätzlich funktioniert, tippe ich auf die einfachste Lösung in dem Fall:
Es wird zum Zeitpunkt des Kopierens entweder die Daten nicht vollständig geschrieben sein bzw. noch ein FileHandle offen sein was das Kopieren verhindert...

Grüße

baumina 20. Mär 2014 07:55

AW: Datei wird mit CopyFile fehlerhaft kopiert
 
Von welchem Typ sind die Variablen pQuelldatei und pZieldatei? Und warum lässt sich der Schreibfehler "PCahr" kompilieren?

jaenicke 20. Mär 2014 07:56

AW: Datei wird mit CopyFile fehlerhaft kopiert
 
Wo liegt denn der Unterschied zwischen den beiden Dateien? Sind nur einzelne Bytes anders?
(Das kannst du ja ganz einfach mit einem beliebigen Hexeditor prüfen, z.B. HxD.)

Uwe Raabe 20. Mär 2014 08:00

AW: Datei wird mit CopyFile fehlerhaft kopiert
 
Du solltest in jedem Fall auch den Rückgabewert von CopyFile überprüfen. Alternativ kannst du auch TFile.Copy aus System.IOUtils verwenden - das wirft eine Exception.

HPB 20. Mär 2014 08:21

AW: Datei wird mit CopyFile fehlerhaft kopiert
 
Zitat:

Zitat von baumina (Beitrag 1252671)
Von welchem Typ sind die Variablen pQuelldatei und pZieldatei? Und warum lässt sich der Schreibfehler "PCahr" kompilieren?

"PCahr" ist ein Schreibfehler von mir!
Im Quellcode steht es schon korrket.
Vielen Dank aber trotzdem für den Hinweis.
HPB

HPB 20. Mär 2014 08:23

AW: Datei wird mit CopyFile fehlerhaft kopiert
 
Zitat:

Zitat von jaenicke (Beitrag 1252672)
Wo liegt denn der Unterschied zwischen den beiden Dateien? Sind nur einzelne Bytes anders?
(Das kannst du ja ganz einfach mit einem beliebigen Hexeditor prüfen, z.B. HxD.)

Es gibt keinen Unterschied in den Dateien. Die Ausgangsdatei wird einfach
unter einem neuen Namen in ein anderes Verzeichnis kopiert.
Vielen Dank für Deine Mühe.
HPB

HPB 20. Mär 2014 08:29

AW: Datei wird mit CopyFile fehlerhaft kopiert
 
Zitat:

Zitat von Lemmy (Beitrag 1252668)
Guten Morgen,

da Dateien kopieren unter Windows erst mal grundsätzlich funktioniert, tippe ich auf die einfachste Lösung in dem Fall:
Es wird zum Zeitpunkt des Kopierens entweder die Daten nicht vollständig geschrieben sein bzw. noch ein FileHandle offen sein was das Kopieren verhindert...

Grüße

Da scheint etwas dran zu sein. Ich habe einfach mal per Batchdatei die erzeugte Datei in eine
andere Datei kopiert: unbenannt.pf =>> rechnung.pdf
Die Batchdatei wird von pdfFactory aufgerufen und ausgeführt.
Danach kopiere ich die Datei "rechnung.pdf" per CopyFile(quelldatei, zieldatei).
Das scheint jetzt erfolgreich zu sein.
Mal sehen was geschieht, wenn ich es auf herz und Nieren prüfe.
Vielen Dank für Deinen Hinweis.
HPB

HPB 20. Mär 2014 08:30

AW: Datei wird mit CopyFile fehlerhaft kopiert
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1252673)
Du solltest in jedem Fall auch den Rückgabewert von CopyFile überprüfen. Alternativ kannst du auch TFile.Copy aus System.IOUtils verwenden - das wirft eine Exception.

Das werd ich mal prüfen.
Vielen Dank für den Tipp.
HPB

jaenicke 23. Mär 2014 10:14

AW: Datei wird mit CopyFile fehlerhaft kopiert
 
Zitat:

Zitat von HPB (Beitrag 1252678)
Es gibt keinen Unterschied in den Dateien. Die Ausgangsdatei wird einfach
unter einem neuen Namen in ein anderes Verzeichnis kopiert.

Wenn es keinen Unterschied nach dem Kopieren geben würde, was wäre dann fehlerhaft?
Irgendeinen Unterschied muss es in den Dateien doch geben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:44 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