vitaliper54 писал(а):Попробовал, не помогает, но понятно, что пишется не туда, приложение 64-х битное
выведи куда-нить на экран sizeof(SLOT_PAR) для Делфи и Лазаруса.
очень интересно посмотреть.
(соответственно для Лазаруса нужно сделать sizeof(SLOT_PAR) когда он объявлен как object, и отдельно когда он объявлен как packed record)
- Код: Выделить всё
- var
 obj: SLOT_PAR;
 begin
 Memo1.Lines.Add( INtToStr(sizeof(SLOT_PAR)));
 Memo1.Lines.Add( Format('%s: %d',  ['base'      , Ofs(obj.base     ) - Ofs(obj)]));
 Memo1.Lines.Add( Format('%s: %d',  ['BaseL'     , ofs(obj.BaseL    ) - ofs(obj)]));
 Memo1.Lines.Add( Format('%s: %d',  ['Base1'     , ofs(obj.Base1    ) - ofs(obj)]));
 Memo1.Lines.Add( Format('%s: %d',  ['BaseL1'    , ofs(obj.BaseL1   ) - ofs(obj)]));
 Memo1.Lines.Add( Format('%s: %d',  ['Mem'       , ofs(obj.Mem      ) - ofs(obj)]));
 Memo1.Lines.Add( Format('%s: %d',  ['MemL'      , ofs(obj.MemL     ) - ofs(obj)]));
 Memo1.Lines.Add( Format('%s: %d',  ['Mem1'      , ofs(obj.Mem1     ) - ofs(obj)]));
 Memo1.Lines.Add( Format('%s: %d',  ['MemL1'     , ofs(obj.MemL1    ) - ofs(obj)]));
 Memo1.Lines.Add( Format('%s: %d',  ['Irq'       , ofs(obj.Irq      ) - ofs(obj)]));
 Memo1.Lines.Add( Format('%s: %d',  ['BoardType' , ofs(obj.BoardType) - ofs(obj)]));
 Memo1.Lines.Add( Format('%s: %d',  ['DSPType'   , ofs(obj.DSPType  ) - ofs(obj)]));
 Memo1.Lines.Add( Format('%s: %d',  ['Dma'       , ofs(obj.Dma      ) - ofs(obj)]));
 Memo1.Lines.Add( Format('%s: %d',  ['DmaDac'    , ofs(obj.DmaDac   ) - ofs(obj)]));
 Memo1.Lines.Add( Format('%s: %d',  ['DTA_REG'   , ofs(obj.DTA_REG  ) - ofs(obj)]));
 Memo1.Lines.Add( Format('%s: %d',  ['IDMA_REG'  , ofs(obj.IDMA_REG ) - ofs(obj)]));
 Memo1.Lines.Add( Format('%s: %d',  ['CMD_REG'   , ofs(obj.CMD_REG  ) - ofs(obj)]));
 Memo1.Lines.Add( Format('%s: %d',  ['IRQ_RST'   , ofs(obj.IRQ_RST  ) - ofs(obj)]));
 Memo1.Lines.Add( Format('%s: %d',  ['DTA_ARRAY' , ofs(obj.DTA_ARRAY) - ofs(obj)]));
 Memo1.Lines.Add( Format('%s: %d',  ['RDY_REG'   , ofs(obj.RDY_REG  ) - ofs(obj)]));
 Memo1.Lines.Add( Format('%s: %d',  ['CFG_REG'   , ofs(obj.CFG_REG  ) - ofs(obj)]));
 end;
для packed record нужно ещё объявить:
- Код: Выделить всё
- {$PACKRECORDS 1}
Alex2013 писал(а):Вообще-то все забыли, но первые версии Лазаруса вроде как транслировали код на паскале в промежуточный Си++ код для GCC... 
все это забыли, потому что такого не было никогда.
Лазарус никогда ничего сам не транслировал, а всегда работал через FPC
FPC никогда не писал никакого Си кода. Было одно время, когда FPC собирался с помощью делфи, но со временем такая возможность была утерена.