Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Тип в байты, разметка 
V
    Опции темы
uranpro
Дата 19.1.2010, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

Репутация: нет
Всего: 1



Добрый день!
есть тип
Код

  TMyType = record
    ProID:integer;
    Command: string[30];
    pFrom : string[30];
    Msg:string[255];
    end;

сколько байт занимает каждое поле ?
delphi 7, кодировка по умолчанию.

ProID - 4б

Это сообщение отредактировал(а) uranpro - 19.1.2010, 17:53


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
~FoX~
Дата 19.1.2010, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 5
Всего: 68



SizeOf
31, 31 и 256



--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
uranpro
Дата 19.1.2010, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

Репутация: нет
Всего: 1



спс
 smile 


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
uranpro
Дата 20.1.2010, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

Репутация: нет
Всего: 1



?
4 + 31 + 31 + 256 = 322
sizeof(TMyType) = 324

322 <> 324

как так ?


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
uranpro
Дата 20.1.2010, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

Репутация: нет
Всего: 1



ап, очень надо!


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
~FoX~
Дата 20.1.2010, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 5
Всего: 68



uranpro, потому что в структуре все дынные должны быть кратны 2, 4, 8 байтам, Если данные занимают меньше 4 байто, то они дополнятются... Но если их упаковать, то все будет ровно...

Код

 TMyType = Packed record
    ProID:integer;
    Command: string[30];
    pFrom : string[30];
    Msg:string[255];
    end;

Вернет 322

Цитата

------------------------------------------------------------
Q-27:  Почему у меня record a : word; b : longint end; имеет размер восемь
байт вместо шести?
------------------------------------------------------------
Если не использовать ключевое слово packed, то Дельфи производит
выравнивание структуры на определенную границу. В разных версиях Дельфи по
разному.

Для того что избежать этого, надо описать структуру следующим образом:

aRec = packed record
  a : Word;
  b : LongInt;
end;

Также не стоит использовать фундаментальные типы, так как их размерность
зависит от версии Дельфи.




Это сообщение отредактировал(а) ~FoX~ - 20.1.2010, 18:40


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
uranpro
Дата 20.1.2010, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

Репутация: нет
Всего: 1



спасибо большое! 
получается, что у меня Command и pFrom весят по 32 байта ?
 smile 


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
~FoX~
Дата 20.1.2010, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 5
Всего: 68



uranpro, Ну как бы не совсем....

SizeOf(MyType.Command) все равно вернет 31, но в структуре не используемый байт будет дополнен.... 

Теоретически это должно оптимизировать работу с память... 

Это сообщение отредактировал(а) ~FoX~ - 20.1.2010, 23:13


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0561 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.