ďťż

Ładny brzuch

Znalazłem w sieci taki kod ( dostosowałem go do swoich potrzeb):
type  TCRFileStream = class(TFileStream)  public    function CopyRest(Source: TStream): Int64;  end; implementation function TCRFileStream.CopyRest(Source: TStream): Int64; const  MaxBufSize = $F000; var  BufSize, N: Integer;  Buffer: PChar;  Pos: Int64; begin  Pos := source.Size - Size;  Source.Seek(Pos*-1,soFromEnd);  Seek(0,soFromEnd);  Result := Pos;  if Pos > MaxBufSize then BufSize := MaxBufSize else BufSize := Pos;  GetMem(Buffer, BufSize);  try    while Pos <> 0 do    begin      if Pos > BufSize then N := BufSize else N := Pos;      Source.ReadBuffer(Buffer^, N);      WriteBuffer(Buffer^, N);      Dec(Pos,N);    end;  finally    FreeMem(Buffer, BufSize);  end; end; end. procedure TForm1.Button1Click(Sender: TObject); var  read, write : TCRFileStream;  plik1, plik2 : TFileName; begin  plik1 := 'C:\1.txt';          plik2 := 'C:\folder\1.txt';  try    read := TCRFileStream.Create(plik1,fmOpenRead or fmShareDenyNone);    if FileExists(plik2) then    begin     if application.messagebox(' ',' ', MB_yesNo)=ID_NO then exit;      try        write := TCRFileStream.Create(plik2,fmCreate);        write.CopyFrom(read,0);      finally        write.Free;      end;    end;  finally    read.Free;  end; end;

Mam taki problem - chciałbym wykorzystać go w mojej aplikacji, ale:

aplikacja przestaje odpowiadać na czas kopiowania - gdzie umieścić (application.processMessages);

jak sprawdzić, ile pliku się skopiowało ( chcę to wykorzystać w progressBarze)

Dzięki za pomoc!
Użytkownik Bełdzio edytował ten post 06 czerwiec 2005, 10:45


A nie lepiej po prostu CopyFile() ?? ale jak lubisz..
try   while Pos <> 0 do   begin     if Pos > BufSize then N := BufSize else N := Pos;     Source.ReadBuffer(Buffer^, N);     WriteBuffer(Buffer^, N);     Dec(Pos,N);     application.processmessages; //tutaj   end;

1. ProcessMessages daj w OnCreate imho lepiej daj ten kod jako osobny wątek
2. co do zliczania do zrób sobie nową zmienną i na końcu pętli daj Inc(zmienna), albo pobaw się z Pos

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •