![]() |
Funktion mit variabler Parameteranzahl importieren
Moin Zusammen,
wie der Titel schon sagt: Hat jemand eine Idee, wie man eine, vermutlich C-Funktion, mit variabler Parameteranzahl in Delphi importieren kann? Die einzige Idee, die mir dazu kommt, ist es die Parameter, Delphi-typisch, als Array of const an eine Funktion zu übergeben, die dann die Parameter entsprechend auf den Stack schiebt und die eigentliche Funktion dann aufruft. Mir wäre halt an einer einfacheren Lösung gelegen ;-) |
huhu,
'könnte' da nicht schon sowas billiges wie:
Delphi-Quellcode:
genügen?
function test(params: tstringlist):string
[EDIT] falls nicht, und das denke ich mir mal so *g*, guck dir das mal hier an --> ![]() [/EDIT] |
Moin Chris,
danke für den Tip. Das Problem ist, dass jeder der Parameter, egal wie viele, auf den Stack geschoben werden, um der Funktion von dort aus zur Verfügung zu stehen. Eine TStringlist könnte zwar mehrere Werte aufnehmen, hätte aber nur einen Wert auf dem Stack zur Folge. [EDIT] Zu Deinem EDIT ;-) Danke, den hatte ich nicht gefunden. Falls jetzt also nicht irgendjemand noch eine geniale Idee hat, werd' ich wohl die oben schon angesprochene Assembler Variante nehmen müssen :? Immer noch besser als gar nicht :mrgreen: [/EDIT] |
sieht echt schwer nach Klimmzug aus. Die Parameterliste ist sehr streng. 8)
|
Moin Hansa,
Zitat:
Das hab' ich jetzt nicht verstanden... |
Die Parameter müssen ja so oder so auf den Stack (außer den ersten drei, die Platz in EAX, EDX und ECX haben, wenn ich richtig liege :wink: ). Normalerweise erledigt das Compiler, aber wenn der Compiler die Parameter nicht auf den Stack schieben kann, muss das der Programmierer tun. Und das geht AFAIK nur in Assembler. Also ist die einzige Möglichkeit wirklich, die Parameter auf den Stack zu schieben und dann die importierte Funktion aufzufrufen. So seh ich das.
Ich schätz mal, ein C/C++-Compiler macht das auch nicht anders. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz