Der Compiler weiß es, aber in der Funktion gibt es keinerlei Typinfos, wenn man nur den Zeiger rein gibt.
Delphi-Quellcode:
procedure Write(Param: Pointer);
procedure Write(const Param);
procedure Write(Param: Variant);
procedure Write(Param: TVarRec);
procedure Write(Param: array of const);
Beim Letzten werden eigentlich zwei Parameter übergeben,
aber man kann es sich auch einfach als
procedure Write(Param: array of TVarRec);
vorstellen.
Leider wird bei zukünftigen Implementationen immer weniger Compiler-Magic benitzt.
Also nicht sowas wie beim alten Read/ReadLn/Write/WriteLn, wo der Aufruf in eine/mehrere kleine Eintzelaufrufe übersetzt wird, für jeden Typen entsprechend.
Variante Parameter kann Delphi, aber leider nur aufrufen, denn offiziell kann man sie in Pascal nicht deklarieren.
Wie bei der Format-Funktion des C++, ala sprintf.
Was man machen kann, ist ein Overload, wie beim
TStream.ReadData.