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 собирался с помощью делфи, но со временем такая возможность была утерена.