Читаю файл...

  • Автор темы ~DE~
  • Дата начала
Статус
Закрыто для дальнейших ответов.
D

~DE~

#1
Здравствуйте!

В общем, для того, чтоб считать из файла заголовок (первые 10 байт) объявляю такой тип данных:
Код:
TFileHead = record
case byte of
0: (Head: array [0..9] of byte);
1: (ID:array [0..2] of Char; // 3 байта
Version:Word;  // 2 байта
Flags:Byte;	 // 1 байт
Size: Dword);	// 4 байта
end;		 // итого все 10 байтов
и, собственно, саму переменную:
Код:
var fh: TFileHead;
делаю следующее:
Код:
file:=TFileStream.Create('name.ext', fmOpenRead);
file.ReadBuffer(fh.Head,10);
file.free;
в результате:
Код:
fh.Head = (0,1,2,3,4,5,6,7,8,9) // считалось правильно
а остальное:
Код:
fh.ID = (0,1,2)
fh.version = (5,4)
fh.flags = (6)
fh.size = (??,??,9,8)
Кто-нибудь подскажет ЧТО неправильно? :D
Заранее благодарю всех кто откликнется.

----
Добавлено позже:

Хорошо, а кто-то может подсказать такие способы работы с файлами (интересует чтение из файла), чтобы хэндл на файл можно было передавать как параметр функции.
Обычные способы assignfile/reset этого не позволяют. TFileStream позволяет, но при чтении данных как число байты идут в обратном направлении. Так вот, есть ли ЕЩЕ какие-либо способы???
Подскажите пожалуйста!!!
 
Z

zubr

#2
1. Сделай вместо record - packed record и все заработает как надо.
2.
TFileStream позволяет, но при чтении данных как число байты идут в обратном направлении.
Насколько я помню, это особенность не функции, а Windows.
 
D

~DE~

#3
1. Сделай вместо record - packed record и все заработает как надо.
2. Насколько я помню, это особенность не функции, а Windows.
zubr,
Спасибо, помогло! :angry:
Гмм... а есть какие-нибудь стандартные функции, чтоб байтам задать правильный порядок? Или это только руками делается?
 
D

~DE~

#5
Kmet,
спасибо, конечно, что пролил свет на наши темные головы, а по сути вопроса что-нибудь посоветуешь?
 

Kmet

Java Team
25.05.2006
1 036
8
#6
Всегда пожалуйста. По сути уже сказал.

<!--QuoteBegin-Kmet+28:06:2006, 11:06 -->
<span class="vbquote">(Kmet @ 28:06:2006, 11:06 )</span><!--QuoteEBegin-->ntohl и компания
[snapback]39118" rel="nofollow" target="_blank[/snapback]​
[/quote]

Компания эта состоит из четырех функций(по две на WORD и на DWORD) которые и конвентируют из ТСР порядка(он прямой всегда) в порядок хоста (для х86 обратный) и обратно.
 
Статус
Закрыто для дальнейших ответов.