BlockWrite
Adam Boduch
BlockWrite
Moduł: System
program Foo;
{$APPTYPE CONSOLE}
uses
System;
var
Src, Dst : File;
BytesRead, BytesWrite : Integer;
TotalBytes : Integer = 0;
Buff : array[0..1024] of Byte;
begin
AssignFile(Src, 'C:\Aplikacja.exe');
try
Reset(Src, 1);
AssignFile(Dst, 'C:\Aplikacja.exe.bak');
try
ReWrite(Dst, 1);
repeat
BlockRead(Src, Buff, 1024, BytesRead);
BlockWrite(Dst, Buff, BytesRead, BytesWrite);
// zliczanie całkowitej ilości odczytanych bajtów
TotalBytes := TotalBytes + BytesWrite;
until (BytesRead = 0) or (BytesWrite <> BytesRead);
finally
CloseFile(Dst);
end;
finally
CloseFile(Src);
end;
Writeln('Skopiowano... całkowity rozmiar pliku: ', TotalBytes, ' bajtów');
Readln;
end.
Na samym początku, program otwiera plik źródłowy oraz tworzy plik docelowy. W obu przypadkach określiliśmy rozmiar rekordu na poziomie 1 bajtu (w procedurach Reset oraz Rewrite). Następnie w pętli kopiujemy kolejne porcje danych, które zostaną zapisane do tablicy Buff. Tak odczytane dane zapisujemy do pliku (kopii) przy pomocy procedury BlockWrite. Po skopiowanie pliku (warunek zakończenia pętli: BytesRead równe zero), wyświetlony zostanie komunikat.
Zobacz też: