Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.10.14;
Скачать: [xml.tar.bz2];

Вниз

Правила записи 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.036 c
2-1190362660
Анна
2007-09-21 12:17
2007.10.14
иконка в Tray


2-1189754420
Ega23
2007-09-14 11:20
2007.10.14
Может ли конструктор быть виртуальным?


1-1185876101
hug
2007-07-31 14:01
2007.10.14
Выбор элемента TTreeView с помощью галочки


3-1181301983
denis24
2007-06-08 15:26
2007.10.14
select top 10


15-1189770684
NeedForHelpAlways
2007-09-14 15:51
2007.10.14
Как сделать словарь терминов?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский