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

Вниз

Правила записи record, ...   Найти похожие ветки 

 
tymofy   (2007-09-17 22:50) [0]

Как надо записывать подобные записи в лпне удобства, стандартов, ...

TFileHeader = record
 FileIdent: Byte;
 FileSize: DWord;
 FileChecksum: Word;
end;


или

TFileHeader = record
 Ident: Byte;
 Size: DWord;
 Checksum: Word;
end;


Как стоит записывать?


 
DrPass ©   (2007-09-17 22:53) [1]


> Как надо записывать подобные записи в лпне удобства, стандартов

Всем бы твои проблемы...


 
Сергей М. ©   (2007-09-17 23:22) [2]


> Как надо записывать подобные записи в лпне удобства


Их не надо "записывать", их надо прямиком в Орешник в кач-ве рассады.


 
Kostafey ©   (2007-09-17 23:25) [3]

> Как надо записывать подобные записи

так

> TFileHeader = record
> Ident: Byte;
> Size: DWord;
> Checksum: Word;
> end;

если этих size-оф несколько возможно имеет смысл делать
еще один объект, ИМХО конечно.


 
Сергей М. ©   (2007-09-17 23:30) [4]


> Kostafey ©   (17.09.07 23:25) [3]


Ты не торопись - в Орешнике места всем хватит


 
Kostafey ©   (2007-09-17 23:37) [5]

> Ты не торопись - в Орешнике места всем хватит

Я уже много раз пытался туда попасть.
Вот вроде уж все продумаещь, чтобы и не глупо очевидно,
что нарочно мол в орешник, и чтоб смешно.

Не получилось...

Что до> [3] Kostafey ©   (17.09.07 23:25)
то я слишком кратко сказал.
Смысл в том, чтобы если у нас например имеется несколько
size-оф (FileSize, RecordSize, etc), то возможно имеет смысл
выделить другой класс.


 
Сергей М. ©   (2007-09-17 23:41) [6]


> Kostafey ©   (17.09.07 23:37) [5]


Чудесно.

Ну а какое отношение все это имеет к "лпне удобства" ?)


 
Kostafey ©   (2007-09-17 23:43) [7]

> Чудесно.
> Ну а какое отношение все это имеет к "лпне удобства" ?)

Телепатор на зарядку поставили? :)

в лпне удобства -> в плане удобства


 
Сергей М. ©   (2007-09-17 23:55) [8]


> Kostafey ©   (17.09.07 23:43) [7]


)
Телепатор тут не выдержит никакой нагрузки


 
Германн ©   (2007-09-18 01:35) [9]


> Правила записи record, ...
>
> tymofy   (17.09.07 22:50)
>
> Как надо записывать подобные записи в плане удобства, стандартов,
>  ...

Да нет таких правил. Кроме обычной разумной понятности.

P.S.
Сергей М. ©
Что-то тебя со вчерашнего вечера "понесло". Даже на простые "очепятки" вскидываешься". (Почти как ЦЧ в своих последних сообщениях на сём форуме :)


 
Slym ©   (2007-09-18 05:29) [10]

tymofy   (17.09.07 22:50)
Оба варианта не катят :) даже не морфология и синтаксис, а содержание: с такой записью в дальнейшем возможны проблемы и корень проблемы Align fields
При различных опциях компилятора получишь различный, несовместимый код.
Избежать этого можно используя TFileHeader = packed record


 
clickmaker ©   (2007-09-18 09:57) [11]

лучше второй вариант. Первый напоминает речь заики


 
evvcom ©   (2007-09-18 10:40) [12]


> с такой записью в дальнейшем возможны проблемы и корень
> проблемы Align fields

Проблемы возможны не с самой записью, а с методами ее использования. А раз так, то проблемы возможны где угодно и запись тут не при чем. А насчет Align ты все же верно подметил, я бы сделал так:
TFileHeader = record
 Size: DWord;
 Ident: Byte;
 Checksum: Word;
end;


 
DrPass ©   (2007-09-18 11:16) [13]


> с такой записью в дальнейшем возможны проблемы и корень
> проблемы Align fields
> При различных опциях компилятора получишь различный, несовместимый
> код

Ну наверное ж просто надо думать, когда пишешь программу. Тупо писать packed для всех записей - не решение проблемы, а извращение.


 
Виктор007   (2007-09-18 12:42) [14]

> с такой записью в дальнейшем возможны проблемы и корень
> проблемы Align fields

Опишите пожалуйста подробнее что это значит?


 
Anatoly Podgoretsky ©   (2007-09-18 12:48) [15]

Проблемы при передаче в другую программу


 
Slym ©   (2007-09-19 04:47) [16]

Виктор007   (18.09.07 12:42) [14]
TFileHeader = record
FileIdent: Byte;
FileSize: DWord;
FileChecksum: Word;
end;

теоретически размер записи = SizeOf(Byte)+SizeOf(DWord)+SizeOf(Word)=1+4+2=7
но фактически:
- при компиляции структуры при опции {$A4} - получаем размер в 12 байт
- при компиляции структуры при опции {$A2} - получаем размер в 8 байт
- при компиляции структуры packed - получаем размер в 7 байт
- кроме того размер зависит от последовательности полей в записи (от их размера). запись эквивалентная твоей, но размером при {$A4} не 12, а 8 байт!:
TFileHeader = record
FileSize: DWord;
FileChecksum: Word;
FileIdent: Byte;
end;


evvcom ©   (18.09.07 10:40) [12]
Проблемы возможны не с самой записью, а с методами ее использования

именно с записью... вот сохранит он эту запись в файл, перекомпилируется и считать из файла эту запись уже не сможет данные (запись) потеряна :)

DrPass ©   (18.09.07 11:16) [13]
Тупо писать packed для всех записей - не решение проблемы, а извращение

Зачем для всех? только для "экспортируемых" записей: сохраняемых в файл, передаваемых между независимыми модулями...


 
Slym ©   (2007-09-19 04:55) [17]

в добавок: при задачах, в которых необходима работа с большими и "тучными" массивами записей оптимизация размера записи (путем packed или опциями {$Aх}) не на последнем месте: 8 это не 12 для наглядности: 66мб это не 100мб памяти
к массивам (стат) также приминимы правила выравнивания - массивы тоже могут быть packed, что также может отразиться на объеме занятой памяти


 
evvcom ©   (2007-09-19 08:44) [18]


> Slym ©   (19.09.07 04:47) [16]
> именно с записью... вот сохранит он эту запись в файл, перекомпилируется
> и считать из файла эту запись уже не сможет данные (запись)
> потеряна :)

Да, смайлик тут действительно к месту. Но описанная тобой проблема - это все же проблема с использованием и непониманием того, что пишешь, а не с самой записью.


 
Anatoly Podgoretsky ©   (2007-09-19 11:08) [19]

> evvcom  (19.09.2007 08:44:18)  [18]

То есть руки и чем думаем


 
evvcom ©   (2007-09-19 12:59) [20]


> Anatoly Podgoretsky ©   (19.09.07 11:08) [19]

:) Ну да, проблема прокладки между рулем и сиденьем :)



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

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

Наверх




Память: 0.52 MB
Время: 0.017 c
15-1190095040
de.
2007-09-18 09:57
2007.10.14
Среды разработки под FreeBSD


15-1189525325
Kerk
2007-09-11 19:42
2007.10.14
Почему мужчины более коммуникабельны?


2-1190037815
F@T@L_Err0r
2007-09-17 18:03
2007.10.14
Регулятор громкости


2-1189763330
artem779
2007-09-14 13:48
2007.10.14
как изменить имя проекта ?


1-1185813272
fdooch
2007-07-30 20:34
2007.10.14
Глобальный хук WH_MOUSE_LL