procedure BlockRead ( var FileHandle : File; var Buffer; RecordCount : Integer {; var RecordsRead : Integer} ) ;
var
myFile : File;
byteArray : array[1..8] of byte;
oneByte : byte;
i, count : Integer;
begin
// Попытка открыть файл Test.byt для записи
AssignFile(myFile, 'Test.byt');
ReWrite(myFile, 4); // Определение отдельной 'записи' как 4 байта
// Заполнение массив данными
for i := 1 to 8 do
byteArray[i] := i;
// Запись данных массива в файл
BlockWrite(myFile, byteArray, 2); // Запись 2 'записи' из 4 байт
//Закрытие файла
CloseFile(myFile);
// Повторное открытие файла для чтения
FileMode := fmOpenRead;
Reset(myFile, 1); // Теперь мы определяем одну запись как 1 байт
// Показ содержимого файла
// Чтение первых 6 байт. 'count' установлен в
// текущий считанный номер
ShowMessage('Чтение первого набора байтов :');
BlockRead(myFile, byteArray, 6, count);
// Показ счтанных значений байта
for i := 1 to count do
ShowMessage(IntToStr(byteArray[i]));
// Теперь читаем один байт за один раз и так до конца файла
ShowMessage('Чтение остающихся байтов :');
while not Eof(myFile) do
begin
BlockRead(myFile, oneByte, 1); // Чтение одного байта за один раз
ShowMessage(IntToStr(oneByte));
end;
// Закрытие файла в последний раз
CloseFile(myFile);
end;
Код:
procedure BlockWrite ( var FileHandle : File; var Buffer; RecordCount : Integer {; var RecordsWritten : Integer} ) ;
var
myFile : File;
byteArray : array[1..8] of byte;
oneByte : byte;
i, count : Integer;
begin
// Попытка открыть файл Test.byt для записи
AssignFile(myFile, 'Test.byt');
ReWrite(myFile, 4); // Определение отдельной 'записи' как 4 байта
// Заполнение массив данными
for i := 1 to 8 do
byteArray[i] := i;
// Запись данных массива в файл
BlockWrite(myFile, byteArray, 2); // Запись 2 'записи' из 4 байт
// Заполнение массива данных с различными данными
for i := 1 to 4 do
byteArray[i] := i*i; // Значение : 1, 4, 9, 16
// Запись только первых 4 элементов из массива данных в файл
BlockWrite(myFile, byteArray, 1); // Запись 1 записи из 4 байт
// Закрытие файла
CloseFile(myFile);
// Повторное открытие файла для чтения
FileMode := fmOpenRead;
Reset(myFile, 1); // Теперь мы определяем одну запись как 1 байт
// Показ содержимого файла
// Чтение первых 6 байт.'count' установлен в
// текущий считанный номер
ShowMessage('Чтение первого набора байтов :');
BlockRead(myFile, byteArray, 6, count);
// Показ считанных значений байта
for i := 1 to count do
ShowMessage(IntToStr(byteArray[i]));
// Now read one byte at a time to the end of the file
ShowMessage('Чтение остающихся байтов :');
while not Eof(myFile) do
begin
BlockRead(myFile, oneByte, 1); // Чтение одного байта за один раз
ShowMessage(IntToStr(oneByte));
end;
// Закрытие файла в последний раз
CloseFile(myFile);
end;
Только эти примеры с файлами .byt
Последний раз редактировалось link993, 02.06.2011 в 11:52.
Var
F, G: File of Byte;
B: Byte;
begin
AssignFile(F, 'C:\in.exe');
AssignFile(G, 'C:\out.exe');
Reset(F);
Rewrite(G);
While Not Eof(F) Do
begin
Read(F, B);
Write(G, B);
end;
CloseFile(F);
CloseFile(G);
end;
Var
F, G: File of Byte;
B: Byte;
begin
AssignFile(F, 'C:\in.exe');
AssignFile(G, 'C:\out.exe');
Reset(F,1);
Rewrite(G);
While Not Eof(F) Do
begin
Read(F, B);
Write(G, B);
end;
CloseFile(F);
CloseFile(G);
end;
Нужно указывать, что размер каждой записи будет 1 байт. Иначе программа будет считывать по 128 байт за раз(по умолчанию).
Нужно указывать, что размер каждой записи будет 1 байт. Иначе программа будет считывать по 128 байт за раз(по умолчанию).
да ну? читаем справку:
Цитата:
Reset procedure
Opens an existing file. Delphi syntax: procedure Reset(var F [: File; RecSize: Word ] );
F is a variable of any file type associated with an external file using AssignFile. RecSize is an optional expression, which can be specified only if F is an untyped file. If F is an untyped file, RecSize specifies the record size to be used in data transfers. If RecSize is omitted, a default record size of 128 bytes is assumed.
тут же все пучком: F: File of Byte; т.е. тип Byte.