AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) JPG wird mit CopyFile fehlerhaft kopiert
Thema durchsuchen
Ansicht
Themen-Optionen

JPG wird mit CopyFile fehlerhaft kopiert

Ein Thema von ThomasWB · begonnen am 2. Okt 2016 · letzter Beitrag vom 2. Okt 2016
Antwort Antwort
ThomasWB

Registriert seit: 21. Jun 2015
38 Beiträge
 
#1

JPG wird mit CopyFile fehlerhaft kopiert

  Alt 2. Okt 2016, 13:05
Hallo,
ich möchte eine JPG-Datei kopieren:
Code:
CopyFile(PChar(strSelectFile),PChar(strFilenameJpg))
Der Befehl liefert keinen Fehler zurück , die Zieldatei strFilenameJpg wird erstellt. Wenn ich die Datei aber öffnen möchte, erhalte ich den Fehler "Das Format der Datei '...' konnte nicht bestimmt werden". Ich habe die beiden Dateien auch schon mit einem HEX-Editor verglichen. Sie sind total unterschiedlich. Ich habe es auch schon mit den unterschiedlichsten Bildern probiert, das Ergebnis ist immer das Geliche: die Zeildatei wird nicht als Grafikdatei erkannt.

Hat irgendjemand auch schon mal das Problem gehabt? Habt ihr eine Idee, waran es liegen kann?
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.633 Beiträge
 
Delphi 12 Athens
 
#2

AW: JPG wird mit CopyFile fehlerhaft kopiert

  Alt 2. Okt 2016, 13:29
Wie sieht es mit der Dateilänge aus?
Ist diese gleich?
Hast du einen Virus, der sich an die Datei mit dranhängt?
Wie sehen die ersten Bytes der jeweiligen Datei aus? Vielleicht kannst du diese mal anhängen.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.048 Beiträge
 
Delphi 12 Athens
 
#3

AW: JPG wird mit CopyFile fehlerhaft kopiert

  Alt 2. Okt 2016, 14:00
Das ist aber nicht das "richtige" MSDN-Library durchsuchenCopyFile aus der Windows.pas / WinApi.Windows.pas, denn bei dir fehlt der 3. Parameter.
Also wie sieht "dein" CopyFile aus?

Was heißt "Der Befehl liefert keinen Fehler zurück"?
Die (originale) WinAPI erzeugt keine Exceptions und gibt nur ein Result+GetLastError zurück (if not CopyFile(...) then RaiseLastOSError; ).

Und von wo nach wo kopierst du?
* intern auf einer Festplatte, innerhalb einer Partition
* auf einen USB-Datenträger
* Netzlaufwerk
* ...

Was passiert, wenn du diese Datei mit dem Explorer kopierst?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
ThomasWB

Registriert seit: 21. Jun 2015
38 Beiträge
 
#4

AW: JPG wird mit CopyFile fehlerhaft kopiert

  Alt 2. Okt 2016, 16:14
Die komplette Code-Zeile lautet:
Code:
if CopyFile(PChar(strSelectFile),PChar(strFilenameJpg)) then
Kopiert wird auf ein und derselben Festplatte und er gleichen Partition. Die Originaldatei hat eine Größe von 22kB, die "erzeugte" Datei ist 230kNB groß. Beim Kopieren mit dem Explorer funktioniert es einwandfrei.

Der Befehl
Code:
if not CopyFile(PChar(strSelectFile),PChar(strFilenameJpg)) then RaiseLastOSError;
geht fehlerfrei durch - aber die Zieldatei ist korrupt.

Anfang der Originaldatei:
00000000h: FF D8 FF E0 00 10 4A 46 49 46 00 01 01 01 00 00 ; ’Ų’ą..JFIF......
00000010h: 00 00 00 00 FF DB 00 43 00 10 0B 0C 0E 0C 0A 10 ; ....’Ū.C........
00000020h: 0E 0D 0E 12 11 10 13 18 28 1A 18 16 16 18 31 23 ; ........(.....1#
00000030h: 25 1D 28 3A 33 3D 3C 39 33 38 37 40 48 5C 4E 40 ; %.(:3=<9387@H\N@
00000040h: 44 57 45 37 38 50 6D 51 57 5F 62 67 68 67 3E 4D ; DWE78PmQW_bghg>M
00000050h: 71 79 70 64 78 5C 65 67 63 FF DB 00 43 01 11 12 ; qypdx\egc’Ū.C...
00000060h: 12 18 15 18 2F 1A 1A 2F 63 42 38 42 63 63 63 63 ; ..../../cB8Bcccc
00000070h: 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 ; cccccccccccccccc
00000080h: 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 ; cccccccccccccccc
00000090h: 63 63 63 63 63 63 63 63 63 63 63 63 63 63 FF C0 ; cccccccccccccc’Ą
000000a0h: 00 11 08 01 1A 01 CD 03 01 22 00 02 11 01 03 11 ; ......Ķ.."......
000000b0h: 01 FF C4 00 1B 00 01 00 02 03 01 01 00 00 00 00 ; .’Ä.............
000000c0h: 00 00 00 00 00 00 00 01 05 02 03 04 06 07 FF C4 ; ..............’Ä
000000d0h: 00 4B 10 00 01 04 01 03 03 01 06 05 01 03 08 07 ; .K..............
Anfang der kopierten Datei:
00000000h: D0 CF 11 E0 A1 B1 1A E1 00 00 00 00 00 00 00 00 ; ŠĻ.ą”±.į........
00000010h: 00 00 00 00 00 00 00 00 3E 00 03 00 FE FF 09 00 ; ........>...ž’..
00000020h: 06 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 ; ................
00000030h: CB 01 00 00 00 00 00 00 00 10 00 00 FE FF FF FF ; Ė...........ž’’’
00000040h: 00 00 00 00 FE FF FF FF 00 00 00 00 C7 01 00 00 ; ....ž’’’....Ē...
00000050h: C8 01 00 00 C9 01 00 00 CA 01 00 00 FF FF FF FF ; Č...É...Ź...’’’’
00000060h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ’’’’’’’’’’’’’’’’
00000070h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ’’’’’’’’’’’’’’’’
00000080h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ’’’’’’’’’’’’’’’’
00000090h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ’’’’’’’’’’’’’’’’
000000a0h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ’’’’’’’’’’’’’’’’
000000b0h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ’’’’’’’’’’’’’’’’
000000c0h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ’’’’’’’’’’’’’’’’
000000d0h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ’’’’’’’’’’’’’’’’
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#5

AW: JPG wird mit CopyFile fehlerhaft kopiert

  Alt 2. Okt 2016, 16:48
Hallo ThomasWB...

Sei so nett und hänge deine Delphi Version an dein Profil dran. Das macht manchmal Sinn...
  Mit Zitat antworten Zitat
Mikkey

Registriert seit: 5. Aug 2013
265 Beiträge
 
#6

AW: JPG wird mit CopyFile fehlerhaft kopiert

  Alt 2. Okt 2016, 17:04
Manchmal sieht man den Wald vor lauter Bäumen nicht.

Die Signatur der Kopie sieht nach einem Office(o.ä) Dokument aus.
Bist Du sicher, dass die Stringvariablen den von Dir vorgesehenen Inhalt haben?
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.596 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: JPG wird mit CopyFile fehlerhaft kopiert

  Alt 2. Okt 2016, 18:14
Die komplette Code-Zeile lautet:
Code:
if CopyFile(PChar(strSelectFile),PChar(strFilenameJpg)) then
Wie himitsu schon schrieb: Das kann nicht Windows.CopyFile sein, weil der 3. Parameter fehlt.

function CopyFile(lpExistingFileName, lpNewFileName: LPCWSTR; bFailIfExists: BOOL): BOOL; stdcall;

Welches CopyFile wird da aufgerufen?
Thomas Mueller
  Mit Zitat antworten Zitat
ThomasWB

Registriert seit: 21. Jun 2015
38 Beiträge
 
#8

AW: JPG wird mit CopyFile fehlerhaft kopiert

  Alt 2. Okt 2016, 18:58
@dummzeuch: Es wird das CopyFile von JvWinDialogs verwendet.

@Mikkey: Mit dem "den Wald vor lauter Bäumen nicht sehen" hattest du vollkommen recht. Ich hätte Stein und Bein geschworen, dass ich die Stringvariablen überprüft hatte. Wahrscheinlich war es dies auch zu Beginn. Dann habe ich den Dialog, mit dem ich strSelectFile auswähle, geändert und bei der Zuweisung zu der Variablen den Namen der alten Dialogkomponente verwendet. Dies habe ich nun korrigiert - und es funktioniert alles fehlerfrei.

Danke euch allen für eure Hilfe.
  Mit Zitat antworten Zitat
Antwort Antwort


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:15 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