"Проблемы перевода" новый Дельфи -> Лазарус

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Alex2013
долгожитель
Сообщения: 3230
Зарегистрирован: 03.04.2013 11:59:44

"Проблемы перевода" новый Дельфи -> Лазарус

Сообщение Alex2013 »

Что за align ?

Код: Выделить всё

 
ovrVector2f = record
    x, y: Single;
  end align 4;

(То есть понятно что это "выравнивание на 4 байта" но на что эту конструкцию в лазарусе заменить ? )
Аватара пользователя
Pavia
постоялец
Сообщения: 290
Зарегистрирован: 07.01.2011 11:46:51

Сообщение Pavia »

Попробуйте так:

Код: Выделить всё

{$A4}
ovrVector2f = record
    x, y: Single;
  end;
{$A-}
{$A+}


Добавлено спустя 2 минуты 40 секунд:
Что за align ?

Для данной конструкции align лишний.

Выравнивание полей в структурах. Но там всё хитро, если упростить то выравниваются только те которые которые равны размеру.
Аватара пользователя
Cheb
энтузиаст
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34
Контактная информация:

Сообщение Cheb »

А почему не

Код: Выделить всё

{$push}
{$packrecords 4}
ovrVector2f = record
    x, y: Single;
  end;
{$pop}

- вдруг там ниже по коду ещё что-то объявляется, ожидая другое выравнивание, выставленное ещё выше?
Alex2013
долгожитель
Сообщения: 3230
Зарегистрирован: 03.04.2013 11:59:44

Сообщение Alex2013 »

О спасибо, а то уже "весь гугл пролистал"... :idea: Сейчас попробую!
Зы
Выше нет но ниже есть выравнивание на 8 байт .
Зы Зы
Вот же гадство !
Там есть и такой прикол align OVR_PTR_SIZE;
Нет что делать я догадался ...

Код: Выделить всё

  {$push}
  {$IFDEF CPU64BITS}
  {$packrecords 8}
  {$ENDIF}

  {$IFDEF CPU32BITS}
  {$packrecords 4}
  {$ENDIF}
...
 {$pop}     

Но кривуля "мама не горюй" ...

Добавлено спустя 46 минут 28 секунд:
Кстати а packed record Объявлять нужно ?
Аватара пользователя
bormant
постоялец
Сообщения: 408
Зарегистрирован: 21.03.2012 11:26:01

Сообщение bormant »

packed record -- они без выравнивания, потому как «упакованы».
Или вопрос был в чем-то другом?
Alex2013
долгожитель
Сообщения: 3230
Зарегистрирован: 03.04.2013 11:59:44

Сообщение Alex2013 »

bormant писал(а):packed record -- они без выравнивания, потому как «упакованы».
Или вопрос был в чем-то другом?

Именно об этом ... спасибо !
Ответить