Delphi tarafından oluşturulan Map dosyalarını inceledim ve orada garip bir şey buldum. Tanımlayıcılar, tek bir nokta yerine çift nokta ile sınırlandırıldı. Mesela MapFile..TFoo
içinDouble dot .. in Delphi Harita dosyası
basit örnekte
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.
alınan ve bayındırlık haritası dosyası
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
En iyi tahminle MapFile..TFoo
bir sınıf olduğunu, ama neden çift noktalar? Ve o zaman SysInit..1
nedir? Bildiğim kadarıyla Delphi anonim sınıflara sahip değil.
Eh, Delphi anonim sınıfları var - anonim işlevler/yordamları uygularlar. Ama burada tam olarak benim tahminim, TFoo'nun VMT'siydi. Http://i.stack.imgur.com/0kLZ0.png ve http://i.stack.imgur.com/eFpD3.png –
@ Arioch'The gibi bir şey, bu resimler C++ için bir .map dosyası gösterir. kullanılan kurallar farklıdır. – Johan
@Johan resimleri göstermiyor .MAP - resimlerin kendilerinde gördüğünüz gibi. Onlar gösteriyorlar. Ve ben hangi derleyici EMBT sürüm BPLs derlemek için evin içinde kullandığını bilmiyorum - Ben onlar DCC32 –