Hi,
ich will Dateien mit CopyFileEx kopieren (mit CopyFileEx da ich ProgressBars eingebaut habe).
Jetzt meine Frage: Warum funktioniert das nicht (es kopiert die Dateien einfach nicht und liefert immer "False" zurück)?
Ich habe den folgenden Code von
einer Seite, wo dieser beschrieben war (Beitrag 6, von "fuba").
Ich hoffe ihr könnt mir helfen
Standart Code:
Delphi-Quellcode:
function PProgressRoutine(TotalFileSize,
TotalBytesTransferred,
StreamSize,
StreamBytesTransferred: LARGE_INTEGER;
dwStreamNumber,
dwCallbackReason: DWORD;
hSourceFile,
hDestinationFile: THandle;
lpData: Pointer): DWORD; stdcall;
begin
if dwCallbackReason = CALLBACK_STREAM_SWITCH then
TLMDBiProgressBar(lpData).Scale := TotalFileSize.QuadPart;
TLMDBiProgressBar(lpData).DarkValue := TotalBytesTransferred.QuadPart;
Application.ProcessMessages;
Result := PROGRESS_CONTINUE;
end;
procedure ListCopyProgress(const Files: TStrings; aDestPath: String; TotalProgressBar, CurrentProgressBar: TLMDBiProgressBar);
var
x, y : integer;
FCancelled: Boolean;
begin
FCancelled := False;
x:=Files.Count;
TotalProgressBar.MinValue := 0;
TotalProgressBar.Scale := x;
for y:=0 to x-1 do
begin
CopyFileEx(PChar(Files[y]), PChar(ExtractFileDir(aDestPath)+'\'+ExtractFileName(Files[y])),
@PProgressRoutine, CurrentProgressBar, @FCancelled, 0);
TotalProgressBar.DarkValue := y+1;
TotalProgressBar.Update;
CurrentProgressBar.Update;
end;
end;
Anwendung:
ListCopyProgress(Dateien, edZielPfad.Text, pbGesamt, pbAktiveDatei);
Was geht hier schief?
Edit: TLMDBiProgressBar fast genauso wie TProgressBar nur bisschen verbessert;
MinValue = TProgressBar.min
Scale = TProgressBar.max
DarkValue = TProgressBar.position
Danke