Thema: Delphi Problem mit CopyFileEx

Einzelnen Beitrag anzeigen

Paul0703

Registriert seit: 24. Sep 2008
Ort: Halle(Saale)
138 Beiträge
 
Delphi 7 Professional
 
#1

Problem mit CopyFileEx

  Alt 27. Sep 2008, 18:57
Hallo,
ich habe jetzt mal versucht, eine Datei zu kopieren und den Fortschritt in einer ProgressBar anzeigen zu lassen.
Das funktioniert auch, aber nur mit kleinen Dateien
Wenn die Datei mehrere 100 MB groß ist, dann passiert gar nichts
Hier der Code:
Delphi-Quellcode:
function CopyFileProgress(TotalFileSize, TotalBytesTransferred, StreamSize,
  StreamBytesTransferred: LARGE_INTEGER; dwStreamNumber, dwCallbackReason,
  hSourceFile, hDestinationFile, lpData: DWORD): DWORD; stdcall;
begin
  Application.ProcessMessages;
  if CancelCopy = True then
  begin
    ShowMessage('Abbruch');
    result := PROGRESS_CANCEL;
    Form1.ProgressBar1.Position := 0;
    Exit;
  end
  else
  Application.ProcessMessages;
  case dwCallbackReason of
    CALLBACK_CHUNK_FINISHED:
      begin
        Form1.ProgressBar1.Position := TotalBytesTransferred.QuadPart;
        result := PROGRESS_CONTINUE;
      end;
    CALLBACK_STREAM_SWITCH:
      begin
        Form1.ProgressBar1.Max := TotalFileSize.QuadPart;
        result := PROGRESS_CONTINUE;
      end;
    end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  Cancel: PBOOL;
begin
  CancelCopy := False;
  Cancel := nil;
  CopyFileEx('C:\aaa.exe', 'D:\aaa.exe',
    @CopyFileProgress, nil, Cancel, 0);
  Form1.ProgressBar1.Position := 0;
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
  CancelCopy := True;
end;

end.
Bin dankbar für Hilfe!

Paul
  Mit Zitat antworten Zitat