Einzelnen Beitrag anzeigen

changlee
(Gast)

n/a Beiträge
 
#25

AW: Datei kopieren mit Fortschrittsanzeige

  Alt 20. Aug 2019, 19:40
ich hab's befürchtet. Ich kann wirklich keine Klassenmethode übergeben??

Dann kapiere ich es aber immer noch nicht.
Ich habe jezt folgenden Code:

Code:
procedure TJobThread.SyncProgress(Position, Size: int64);
begin
  self.fProgressPosition := Position;
  self.fProgressSize     := Size;
  self.fProgressToPublish := 0;
  self.Synchronize(self.publishProgress);
end;

function SyncProgress2(_TotalFileSize, _TotalBytesTransferred, _StreamSize, _StreamBytesTransferred: LARGE_INTEGER; _StreamNumber, _CallbackReason: LongWord; _SourceFile, _DestinationFile: THandle; _Data: Pointer): LongWord;
var a,b:int64;
begin
  //a := int64(_TotalBytesTransferred);
  //b := int64(_TotalFileSize);
  //TJobThread(_Data).SyncProgress(a,b);
  result := PROGRESS_CONTINUE;
end;


procedure TJobThread.Execute;
var
  doCancel : PBOOL;
  src,tgt:string;
begin
  src := 'c:\temp\datei1.img';
  tgt := 'c:\temp\datei2.img';
  doCancel := PBOOL(False);
  Windows.CopyFileEx(PChar(s1), PChar(s2), @SyncProgress2, @self, doCancel, 0) then begin
end;
Die Zieldatei wird erstellt, enthält aber keine Daten. Der Kopiervorgang ist sofort zu Ende und die Datei nicht zu öffnen.
Setze ich einen Haltepunkt bekomme ich beim Aufruf von CopyFileEx eine Zugriffsverletzung (Lesen von Adresse...).
  Mit Zitat antworten Zitat