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:
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; |
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:
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.