Thema: Delphi CopyFileEx kopiert nicht

Einzelnen Beitrag anzeigen

Destroxi

Registriert seit: 29. Okt 2011
55 Beiträge
 
Delphi 7 Enterprise
 
#1

CopyFileEx kopiert nicht

  Alt 28. Nov 2011, 19:39
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
  Mit Zitat antworten Zitat