Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.06.2011, 11:38
link993 link993 вне форума
Прохожий
 
Регистрация: 08.05.2011
Сообщения: 36
Репутация: 10
Восклицание Как побайтно считать файл)

Ув. форумчане!!
Скажите пжл как побайтно считать файл и записать его в другой (два .exe файла). Буду очень благодарен...
__________________
Я не поэт, но я скажу стихами: "Пошли вы нах*(пииии)уй мелкими шажками" Люди эт я шучу...
Ответить с цитированием
  #2  
Старый 02.06.2011, 11:42
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

BlockRead, BlockWrite в помощь в инете примеров куча, да и думаю на форуме не меньше можно найти, да и в справке самого Delphi не ленитесь
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #3  
Старый 02.06.2011, 11:47
link993 link993 вне форума
Прохожий
 
Регистрация: 08.05.2011
Сообщения: 36
Репутация: 10
Восклицание

Спасибо))

Код:
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.
Ответить с цитированием
  #4  
Старый 02.06.2011, 14:39
Аватар для AND_REY
AND_REY AND_REY вне форума
Активный
 
Регистрация: 31.03.2009
Адрес: Украина, г.Днепропетровск
Сообщения: 324
Версия Delphi: Delphi7
Репутация: 3877
По умолчанию

Если по байтно то можно так:
Код:
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;
__________________
If end Then begin;
Ответить с цитированием
  #5  
Старый 03.06.2011, 12:44
ZXCCXZ ZXCCXZ вне форума
Прохожий
 
Регистрация: 10.05.2011
Сообщения: 12
Репутация: 10
По умолчанию

Цитата:
Сообщение от AND_REY
Если по байтно то можно так:
Код:
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 байт за раз(по умолчанию).
Ответить с цитированием
  #6  
Старый 03.06.2011, 13:33
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от ZXCCXZ
Нужно указывать, что размер каждой записи будет 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.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:07.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter