![]() |
Probmelm mit: "Dynamisches Einbinden einer DLL"
Hi!
Ich hab das Problem schon mal angesprochen, in "Exporttable einer DLL". Rauszufinden, welche Funktionen exportiert werden, ist kein Problem (mehr :D ). Aber gibt es eine Möglichkeit, rauszufinden, welche Parameter eine Funktion verwendet, (also Parametername und Parametertyp), diese Parameter in eine Datei zu speichern und zur Laufzeit zu laden? Oder muss ich die Funktionen als Typendefinition in mein Programm einbinden? __________________________________________________ ___________ Edit: Ich bräuchte im Prinzip sowas wie:
Code:
und
function GetFunctionParams(Functionname: string):TParamList;
Code:
wobei TParamList einfach eine TStringlist ist.
function ExecuteFunction(FunctionName: string; ParamList: TParamList):boolean;
|
Kuck mal hier:
![]() |
@Luckie
Das ganze nützt mir nicht viel, weil das Beispielprogramm mir nicht das liefert, was ich will. Ich will eine Funktion, die mit sagt, dass eine Procedure P mit den Parametern (A: integer; B: string; C: boolean) eben diese Parameter A-C mit den entsprechenden Parametertypen (integer, string, boolena) zrückgibt. So wie ich dein Beispielprogramm verstehe, liefert es mit die Adressen von Fuktionen zurück. |
Was für ein beispiel-programm? Ich meinete das Tutorial von Assarbad.
|
Auf der Page war davon nichts zu lesen, also bin ich davon ausgegeangen, dass es in einem der Beispielprogramme erklärt ist.
Aber: wie komme ich an das Tutorial von Assarbad ran? Ich hab keinen Link auf der Page gesehen :freak: Edit: OOPS, ok war'n Browser-Prob :mrgreen: |
Die Tutorials runterladen und installieren.
Dein Browser-Problem könnte auch ich gerade behoben haben. ich habe nämlich gerade das Inhaltsverzeichnis mit den Tutorials verknüpft, also alle die man online lesen kann. Dabei habe ich auch Assarbdas DLL-Tutorial als PDF-datei zum online lesen zugänglich gemacht. |
Trotzdem:
Assabard schreibt im Tutorial: Zitat:
Delphi-Quellcode:
was ich suche ist eine Möglichkeit die Typendefinition zu umgehen, indem ich, sofern es denn gehen sollte, eine Funktion schreibe, die mir die Parameter einer gegebenen Funktion in eine Liste schreibe, die ich dann einer Funktion ExecuteFunction(Functionname: string; ParamList: TStringlist):boolean; als Parameter "ParamList" übergeben kann.
type
TFunktion = function (a,b : integer):string; ... procedure GetEntryPoints; begin ... end; |
Aber ich glaube jetzt verstehe ich erst so langsam, was du willst. Du willst die Parameter rausbekommen, die die exportireten Funktionen brauchen oder wie?
Das wird schwer. Das kann selbst der Dependency Walker von Visual C bzw. PSDK-Tools nicht. |
Hoi,
genau das hab ich mal gefragt, war aber noch zu dem Zeiten des DF: Soviel ich mich erinnern kann kann man das nicht! |
OK. Vergessen wir das. Wäre es möglich, etwas in der art zu schreiben:
Delphi-Quellcode:
Also, dass ich die Parameter in eine Datei spreichere (mit Datentypen), diese dann zur Laufzeit in eine TStringlist schreibe und der Funktion übergebe? Das würde dann natürlich nur mit DLLs gehen, von denen ich den Export-Tabe und die Parameter der Funktionen kenne. Ich müsste also nur noch einen Weg finden, aus einem String einen Befehl zu machen. Aber ich glaube, das dürfte unmöglich sein, oder??
function ExecuteFunction(FunctionName: string; IsFunction: Boolean; FuncResultType: string; ParamList: TStringlist):boolean;
var Syntax : string; begin syntax := ''; ParamCount := ParamList[0]; if IsFunction then Syntax := Syntax + 'Function '+FunctioName+'(' else Syntax := Sybtax + 'Procedure + 'FunctionName+'('; for I:= 1 to ParamList do begin Systanx := Syntax + ParamList[i]; end; if IsFunction then Syntax := Syntax+'):'+FuncResultType else Syntax := Syntax + ')'; ExecuteSyntax(Syntax); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 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