![]() |
DLL mit mehreren Rückgabewerten?
Hallo,
ich habe ein bischen mit der DLL-Programmierung unter Delphi 2005 PE rumgespielt und frage mich nun, ob es möglich ist aus den Funktionen der DLL mehrere Ergebnisse zurückzugeben? Um das mal zu verdeutlichen: Ich brauche eine Möglichkeit, womit ich dem Hauptprogramm mehrere Informationen geben kann. Zum Beispiel eine ganze Zahl und dazu noch ein boolscher Wert. Dazu ein Beispiel: Es wird im Hauptprogramm (ein Fantasiespiel) ein Schlag angesetzt. Die DLL-Funktion erhält nun die Spielwerte für den Angriff (Helden- als auch Gegnerwerte). Die Funktion berechnet nun anhand dieser Werte, dass der Schlag ausgeführt werden konnte und gleichzeitig ein Glückstreffer erzielt wurde. Das wären also in diesem Fall 3 Informationen, die aus der DLL ins Hauptprogramm übergeben werden müssen (1. Treffer, 2. Schaden, 3. war ein Glückstreffer). Lässt sich das irgendwie bewerkstelligen, indem ich in der DLL Variablen erstellen kann oder auf Variablen im Hauptprogramm zugreifen kann? Danke im Voraus! :) |
Re: DLL mit mehreren Rückgabewerten?
hallo,
ich bin mir nicht sicher, ob man solche funktionen auch in dlls einbinden kann, denke aber schon: function blabliblo(übergabewert: integer; var rückgabewert: boolean): string; d.h. die funktion bekommt einen "befehls"-parameter (in diesem fall "übergabewert") und den zugriff (weiss nicht ob diese beschreibung so stimmt, kann auch ein pointer oder so sein, naja) auf eine weitere variable (hier "rückgabewert"). diese variable kann von der funktion verwendet und überschrieben werden, d.h. die funktion kann den wert lesen, und auch setzen ("global" -naja falsches wort ;-)). außerdem gibt es ja noch den resulttyp. --> du hast hier zwei ergebnisse. mfg, heiopei |
Re: DLL mit mehreren Rückgabewerten?
Hi,
Wenn ich das richtig verstanden habe willst du mit einer Funktion oder Prozedur mehrere Werte zurück liefern lassen. Guck dir ma den Befehl out an. Ich denke das dürfte dir weiter helfen. |
Re: DLL mit mehreren Rückgabewerten?
Zitat:
Die genaue Begrifflichkeit ist Nebensache, aber es definitiv kein Befehl. Grundlegend sollte man aber Var verwenden, dann hat man keine Probleme mit anderen Sprachen, da es laut Threadersteller um DLLs geht. Besonderheiten sind mit Out in Bezug auf andere DLLs von anderen Systemen nicht zu erwarten, aber mit Var ist man auf der sicheren Seite. |
Re: DLL mit mehreren Rückgabewerten?
Zunächst danke für die Antworten. heiopei und Muetze1 treffen es auf den Punkt. Wie kann ich denn dann die Funktion im Hauptprogramm aufrufen und wie kann ich auf diese deklarierte Variable als auch auf den eigentlichen Rückgabewert im Hauptprogramm zugreifen, wenn wir bei diesem Beispiel bleiben?
Code:
function blabliblo(übergabewert: integer; var rückgabewert: boolean): string;
|
Re: DLL mit mehreren Rückgabewerten?
mittach,
du musst ersteinmal im hauptprogramm die funktion definieren (mit external... und gleichen variablennamen und variablenabfolge), also:
Delphi-Quellcode:
bin mir jetzt grad gar nicht sicher, wie die syntax mit dem external geht - schau da lieber in der hilfe noch mal nach.
//im hauptprogramm
... function blabliblo(übergabewert: integer; var rückgabewert: boolean): string; external 'xyz.dll'; ... jetzt rufst du vom hauptprogramm die funktion auf
Delphi-Quellcode:
und bekommst die beiden ergebnisse!
procedure hauptprogramm;
var result1: Boolean; result2: string; begin result2 := blabliblo(100, result1); end; mfg, heiopei |
Re: DLL mit mehreren Rückgabewerten?
Gut, es funktioniert. Vielen Dank! :)
|
Re: DLL mit mehreren Rückgabewerten?
eine weitere möglichkeit ist einen Record zurück zu geben der beide Werte enhält.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:59 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 by Thomas Breitkreuz