Ich glaube ich habe das Problem gefunden. Es scheint als ob meine Kopierrountine einen Fehler tätigt. Ich habe probeweise alle Dateigrößen, die übertragen wurden in einer ListBox eingeschrieben. Das unfassbare war, dass ich nicht wie ich dachte 25 Dateien sondern 28 Dateien kopiert haben, zumindest virtuell. Kopiert wurden aber wirklich nur 25, aber in der Liste stehen 28 Werte. Einige Werte sind nahezu identisch und unterscheiden sich blos um ein paar Byte. Was ich damit sagen will ist, dass die folgende Routine rigendwie doppelte Werte aufnimmt.
Delphi-Quellcode:
function CopyFileProgress(TotalFileSize, TotalBytesTransferred, StreamSize, StreamBytesTransferred: LARGE_INTEGER; dwStreamNumber, dwCallbackReason, hSourceFile, hDestinationFile, lpData: DWORD): DWORD; stdcall;
begin
Application.ProcessMessages;
if Main.bCopyCanceled = True then
begin
Result := PROGRESS_CANCEL;
Exit;
end;
case dwCallbackReason of
CALLBACK_CHUNK_FINISHED:
begin
Progress.PBrCopy.Position := TotalBytesTransferred.QuadPart;
Result := PROGRESS_CONTINUE;
end;
CALLBACK_STREAM_SWITCH:
begin
Progress.PBrCopyAll.Position := Progress.PBrCopyAll.Position + Progress.PBrCopy.Position;
Progress.ListBox1.Items.Add(inttostr(Progress.PBrCopy.Position));
Progress.PBrCopy.Max := TotalFileSize.QuadPart;
Result := PROGRESS_CONTINUE;
end;
end;
end;
Wie kann das sein? Dazu ein Bild im Anhang.
[Edit]
Ich habe dazu mal ein anderen Beitrag eröffnet, da es meiner Meinung nach nicht hier her passt.
CopyFileProgress mit Fehler
[/Edit]