我一直在检查Delphi生成的地图文件,发现了一个奇怪的问题。标识符使用双点而不是单点进行分隔。
例如,从简单示例中获取的MapFile..TFoo
。
program MapFile;
{$APPTYPE CONSOLE}
{$R *.res}
type
TFoo = class(TObject)
public
function GetFoo: string;
end;
function TFoo.GetFoo: string;
begin
Result := 'foo';
end;
var
foo: TFoo;
begin
foo := TFoo.Create;
writeln(foo.GetFoo);
foo.Free;
end.
以及它的公共映射文件
Address Publics by Name
0001:00005AC8 MapFile..TFoo
0001:00005BBC MapFile.Finalization
0004:00002BA0 MapFile.foo
0002:000000BC MapFile.MapFile
0001:00005B88 MapFile.TFoo.GetFoo
0001:000059D0 SysInit...
0001:000059C0 SysInit...
0001:00005AA8 SysInit...
0001:000059B0 SysInit...
0001:00005A98 SysInit...
0001:00005A74 SysInit...
0003:000007D8 SysInit...
0001:000059A0 SysInit...
0001:000059E0 SysInit...
0001:000059F0 SysInit...
0001:00005A04 SysInit...
0001:00005A34 SysInit...
0001:00005A4C SysInit...
0004:00002B98 SysInit..1
我最好的猜测是MapFile..TFoo
是一个类,但为什么有双点呢?然后SysInit..1
是什么意思?据我所知,Delphi没有匿名类。
.map
文件,使用的惯例是不同的。 - Johan