Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.12;
Скачать: CL | DM;

Вниз

FileRead({record тип}, SizeOf({record тип}));   Найти похожие ветки 

 
Vitalis ©   (2002-07-01 20:24) [0]

НАрод, вот кусок кода:

type
TMAIN_HEAD = record
HEAD_CRC : Word;
HEAD_TYPE : Byte;
HEAD_FLAGS : Word;
HEAD_SIZE : Word;
RESERVED1 : Word;
RESERVED2 : Cardinal;
end;
....
procedure ABC;
var Rec : TMAIN_HEAD;
begin
FileOpen(...);
FileRead(..., Rec, SizeOf(Rec));
end;


у меня в файле, например, такие байты: 01 02 03 04 05 06 07 08 09...
Получайтся:
Rec.HEAD_CRC = 01 02;
Rec.HEAD_TYPE = 03;
Rec.HEAD_FLAGS = 05 06; // Почему пропускается 1 байт????
Rec.HEAD_SIZE = 07 08;
Дальше все идет с тем же сдвигом на 1 байт.
И еще: почему SizeOF - возвращает 16, а не 13????
Че делать????


 
Volj ©   (2002-07-01 20:38) [1]

Попробуй снять галочку "aligned record fields" в Project Options|Compiler


 
Vitalis ©   (2002-07-01 20:52) [2]

У меня D6 - там выбор: 1, 2, 4, 8. А зачем вообще это нужно? Для быстродействия?


 
Anatoly Podgoretsky ©   (2002-07-01 20:55) [3]

Есть такое волшебное слово packed record
а так да, для скорости, жалко что 16 не хватает


 
Volj ©   (2002-07-01 21:00) [4]

2Anatoly Podgoretsky:
Присоединяюсь.

2Vitalis: Ставь величину, равную минимальному размеру используемой переменной. А еще лучше, используй Packed record.


 
Vitalis ©   (2002-07-01 22:59) [5]

Все, понял. Оставил 8 а свои записи поставил packed record. Thx 2 all



Страницы: 1 вся ветка

Текущий архив: 2002.09.12;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.011 c
1-35696
France
2002-09-02 12:43
2002.09.12
Переименовать Пуск Программы <Группа> <ярлык>


3-35597
Jony
2002-08-22 10:33
2002.09.12
Создание полей в DataSet и связанных с ними элементов в RunTime


14-35919
Лана Розанова
2002-08-19 10:26
2002.09.12
ыви


3-35574
demisen
2002-08-21 14:17
2002.09.12
Размер секции в отчете (QuickReport)


14-35865
gray_k
2002-08-15 18:17
2002.09.12
где взять