Ein PAnsiChar geht natürlich nicht so einfach, dann wäre die Struktur nicht identisch.
Die Größe des Arrays Name ist dynamisch und damit die Größe des gesamten Records.
Delphi-Quellcode:
type
PIMAGEHLP_SYMBOL = ^TIMAGEHLP_SYMBOL;
TIMAGEHLP_SYMBOL =
record
SizeOfStruct: DWORD;
// set to sizeof(IMAGEHLP_SYMBOL)
Address: DWORD;
// virtual address including dll base address
Size: DWORD;
// estimated size of symbol, can be zero
Flags: DWORD;
// info about the symbols, see the SYMF defines
MaxNameLength: DWORD;
// maximum size of symbol name in 'Name'
private
FName:
array[0..0]
of AnsiChar;
// symbol name (null terminated string)
function GetName: PAnsiChar;
public
property Name: PAnsiChar
read GetName;
end;
function TIMAGEHLP_SYMBOL.GetName: PAnsiChar;
begin
if MaxNameLength = 0
then
Result :=
nil
else
Result := @FName;
end;