Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2011, 13:02   #1
Bizunov
Пользователь
 
Регистрация: 16.04.2011
Сообщений: 36
По умолчанию Нетипизированный файл

Всем привет.
Помогите пожалуйста считать из нетипизированного файла (бинарника) последовательность чисел (0..255). Благодарю.
Bizunov вне форума Ответить с цитированием
Старый 15.05.2011, 13:16   #2
Swarog
Форумчанин
 
Аватар для Swarog
 
Регистрация: 26.01.2010
Сообщений: 215
По умолчанию

для чтения используй

procedure BlockRead(var F: File; var Buf; Count: Integer [; var AmtTransferred: Integer]);

все астальное поиск в помощь, иначе сам запутаешься

Код:
var 
  MyFile : file;
begin
  assign(MyFile,Filename);
  reset(MyFile,1);
  {для записи}
  Blockwrite(MyFile,item,sizeof(item));
  {для чтения}
  BlockRead(MyFile,item,sizeof(item));
  close(MyFile);
end;
коротенький пример для затравки
Могу лишь пнуть в нужном направлении (ну или как получится)
Swarog вне форума Ответить с цитированием
Старый 15.05.2011, 13:54   #3
Bizunov
Пользователь
 
Регистрация: 16.04.2011
Сообщений: 36
По умолчанию

Спасибо! Оказывается, нужно было использовать SizeOf! Как я понял, эта функция возвращает размер переменной в байтах, верно?
И забегая вперед,хочу спросить, как записывать числа больше 255 байт? Юзать побитовую математику или достаточно изменить кол-во считываемых байт в в BlockWrite/Read?
Bizunov вне форума Ответить с цитированием
Старый 15.05.2011, 15:09   #4
Swarog
Форумчанин
 
Аватар для Swarog
 
Регистрация: 26.01.2010
Сообщений: 215
По умолчанию

Цитата:
Сообщение от Bizunov Посмотреть сообщение
И забегая вперед,хочу спросить, как записывать числа больше 255 байт? Юзать побитовую математику или достаточно изменить кол-во считываемых байт в в BlockWrite/Read?
что значит число больше 255 байт? При чем побитовая арифметика?

в принципе читаемый и записываемый блок ограничен 2гб. Если вы имеете ввиду чтение запись числа типа интежер и инт 64 то вот еще пример для размышления


Код:
var 
  MyFile : file;
  i: integer;
  i64: int64;
  ArOfI: array [0..9] of integer;
begin
  assign(MyFile,Filename);
  reset(MyFile,1);
  Blockwrite(MyFile,i,sizeof(integer) {4 байта});

  Blockwrite(MyFile,i64,sizeof(int64) {8 байт});

  Blockwrite(MyFile,@ArOfI[0],sizeof(ArOfI[0]) * length(ArOfI){4*10 = 40 байт});
 // точно не помню может и без собаки нужно
  close(MyFile);
end;
Могу лишь пнуть в нужном направлении (ну или как получится)
Swarog вне форума Ответить с цитированием
Старый 15.05.2011, 15:29   #5
Bizunov
Пользователь
 
Регистрация: 16.04.2011
Сообщений: 36
По умолчанию

А, ну все, я понял, спасибо. Сказываются годы работы в ГМ и тупые функции для работы с бинарниками )
Bizunov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нетипизированный файл. Нужно оптимизировать torah Помощь студентам 3 06.05.2011 22:41
Объявить какой-либо заранее созданный файл как нетипизированный anurid Паскаль, Turbo Pascal, PascalABC.NET 4 24.04.2010 20:00
нетипизированный файл amandra Общие вопросы Delphi 6 07.10.2008 07:44
[Pascal]Нетипизированный файл Fuaran8989 Помощь студентам 1 13.05.2008 09:14
Нетипизированный файл OrdJONY Общие вопросы Delphi 10 03.10.2007 18:39