Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Funktion mit variabler Parameteranzahl importieren (https://www.delphipraxis.net/5257-funktion-mit-variabler-parameteranzahl-importieren.html)

Christian Seehase 29. Mai 2003 21:02


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 ;-)

chris 29. Mai 2003 21:27

huhu,

'könnte' da nicht schon sowas billiges wie:

Delphi-Quellcode:
function test(params: tstringlist):string
genügen?

[EDIT]

falls nicht, und das denke ich mir mal so *g*, guck dir das
mal hier an -->

http://groups.google.de/groups?hl=de...s.t-online.com

[/EDIT]

Christian Seehase 29. Mai 2003 23:32

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]

Hansa 30. Mai 2003 00:36

sieht echt schwer nach Klimmzug aus. Die Parameterliste ist sehr streng. 8)

Christian Seehase 30. Mai 2003 01:12

Moin Hansa,

Zitat:

Zitat von Hansa
Die Parameterliste ist sehr streng.

:?:

Das hab' ich jetzt nicht verstanden...

Chewie 30. Mai 2003 09:44

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 18:43 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz