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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2010, 20:39   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Неверное считывание из файла [BlockRead]

В общем ситуация:

Script.asc:


Код:
Type
 TCell = Record
  X  : Integer; (* Steps for skip in FCOLOR *)
  Y  : Integer; (* Steps for skip if FCOLOR not founded *)
  T  : Integer;
  F  : Integer; (* This use as color in FCOLOR mode *)
  P1 : TPoint;
  P2 : TPoint;
 End;

Var
 Cell  : Array of TCell;
Код:
 Sleep(5000);
 AssignFile(FCoun, 'Counter.txt');
 Reset(FCoun);
 ReadLn(FCoun, SCoun);
 Count := StrToInt(SCoun);
 CloseFile(FCoun);

 SetLength(Cell, Count);
Здесь Count считывается нормально, в данной ситуации Count = 2.

Код:
AssignFile(F, 'Script.asc');
 Reset(F,1);
 For J := 0 to Count - 1 do
  BlockRead(F, Cell[J], SizeOf(TCell));
 CloseFile(F);


Должно быть
Первый cell: X=355, Y=453, T=2
Второй cell: X=375, Y=558, T=1

Я как-то неправильно записал данные в хексе?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 16.05.2010, 22:38   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

ReadBlock читает байты из нетипизированного файла и делает это в другом порядке, первое 4-х битное число будет равно 63 01 00 00 (в 16 СС) = 1661009920
Чтобы получить 355 (то есть прямой порядок байт), то следует читать файл как типизированный (типа TCell). Тогда и получим прямой порядок байт 00 00 01 63 = 355

То есть в хексе надо исправить файл на
63 01 00 00 c5 01 00 00 02 00 00 00 и т.д.
eoln вне форума Ответить с цитированием
Старый 16.05.2010, 23:46   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Спасибо, попробую.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
считывание из файла U-S Общие вопросы C/C++ 0 26.02.2010 19:42
неверное преобразование даты при открытии DBF файла в MS Excel 2007 Serge_Bliznykov Microsoft Office Excel 13 26.11.2009 09:37
Считывание с файла на С++ lamak Помощь студентам 8 01.11.2009 22:18
BlockRead -чтение dat файла element Общие вопросы Delphi 2 15.06.2009 14:21
Считывание из файла DimkinStd Общие вопросы Delphi 7 24.01.2007 19:18