Baue einen "Calldispatcher" rein.
Delphi-Quellcode:
procedure DoCallOverload(params);
begin
OverloadedProc1(Params);
end;
procedure Asmtest;
asm
... blabla
call DoCallOverloaded
... blabla
end;
Geht nicht anders, der Assembler bzw. Linker benutzt immer die erste überladene Funktion die er findet. Ist mir auch schon aufgefallen. Allerdings habe ich festgestellt das die erste Funktion die der Linker benutzt auch immer die erste Funktion ist die im Source deklariert wurde. Bei überladenen Funktionen ist es ja meistens so das sie nur als "Typ-Konviertierungs-Funktionen" agieren, sprich mehrere überladens Funktionen gleichen Typus rufen intern im Grunde immer die gleiche reale Funktion auf. D.h. sie wandeln nur die Paramater um. Exakt das nutze ich dann aus indem diese interne Arbeits-Funktion Paramater benutzt die für Assembler Aufrufe tauglich sind. Dieses Arbeits-Funktion wird selber nicht überladen, und schwups hat sich das Problem erledigt.
Gruß Hagen