AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Funktion mit variabler Parameteranzahl importieren
Thema durchsuchen
Ansicht
Themen-Optionen

Funktion mit variabler Parameteranzahl importieren

Ein Thema von Christian Seehase · begonnen am 29. Mai 2003 · letzter Beitrag vom 30. Mai 2003
Antwort Antwort
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#1

Funktion mit variabler Parameteranzahl importieren

  Alt 29. Mai 2003, 22:02
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
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
chris

Registriert seit: 24. Mai 2003
Ort: Düsseldorf
196 Beiträge
 
Delphi 2009 Professional
 
#2
  Alt 29. Mai 2003, 22:27
huhu,

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

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]
Chris
D2009.4 | Vista SP2 x32
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#3
  Alt 30. Mai 2003, 00: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
[/EDIT]
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4
  Alt 30. Mai 2003, 01:36
sieht echt schwer nach Klimmzug aus. Die Parameterliste ist sehr streng. 8)
Gruß
Hansa
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#5
  Alt 30. Mai 2003, 02:12
Moin Hansa,

Zitat von Hansa:
Die Parameterliste ist sehr streng.


Das hab' ich jetzt nicht verstanden...
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#6
  Alt 30. Mai 2003, 10: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 ). 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.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:38 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