Autor Beitrag
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 17.06.05 22:25 
Ich bin ATM dabei, eine eigene Typinfo (bei bestehenden Typen mit der von Delphi kompatibel) zu schreiben und wollte den Type Pointer implementieren. Soweit, so gut, funzt auch supi:

ausblenden Delphi-Quelltext
 
213:
214:
215:
216:
217:
218:
{ ... }
const
    Data_OCmdTypeInfo_VOID: Array[0..5] Of Char = #0#4'VOID';
    Type_OCmdTypeInfo_VOID: POCmdTypeInfo_TypeInfo = @Data_OCmdTypeInfo_VOID;

    Data_OCmdTypeInfo_Pointer: Array[0..12] Of Char = #18#7'Pointer'#0#0#0#0;
    Type_OCmdTypeInfo_Pointer: POCmdTypeInfo_TypeInfo = @Data_OCmdTypeInfo_Pointer;
ausblenden Delphi-Quelltext
 
244:
245:
246:
247:
248:
249:
250:
251:
252:
{ ... }
Function GetOCmdTypeData(ATypeInfo: POCmdTypeInfo_TypeInfo): POCmdTypeInfo_TypeData; Overload;
Asm
    XOR     EDX, EDX
    MOV     DL, BYTE PTR [EAX+1]
    LEA     EAX, [EAX+EDX+2]
End;

Initialization
    GetOCmdTypeData(Type_OCmdTypeInfo_Pointer)^.TD_Pointer.BaseType := @Type_OCmdTypeInfo_VOID;

Jedoch würde ich gern in dem markierten Block die Adresse von Type_OCmdTypeInfo_VOID direkt in den String schreiben, ohne den Umweg in Zeile 252.

FYI: POCmdTypeInfo_TypeData ist ein ^TOCmdTypeInfo_TypeData, der Offsetmäßig mit TTypeInfo von Delphi kompatibel ist, jedoch für jeden TypeKind einen Subrecord an Offset 0 (Variabler Record-Type). TOCmdTypeInfo_TypeData_Pointer, der für Pointer-Subtypen zuständig ist, sieht so aus:
ausblenden Delphi-Quelltext
 
116:
117:
118:
119:
{ ... }
Type
    TOCmdTypeInfo_TypeData_Pointer = Packed Record
        BaseType: PPTypeInfo;
    End;

Ich hoffe, einer kann mir helfen, wie ich das möglichst ohne Runtime-Source hinbekommen.

TIA,
BenBE.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.