Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Probmelm mit: "Dynamisches Einbinden einer DLL" (https://www.delphipraxis.net/2297-probmelm-mit-dynamisches-einbinden-einer-dll.html)

Mike_C 16. Jan 2003 13:47


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:
function GetFunctionParams(Functionname: string):TParamList;
und

Code:
function ExecuteFunction(FunctionName: string; ParamList: TParamList):boolean;
wobei TParamList einfach eine TStringlist ist.

Luckie 16. Jan 2003 14:13

Kuck mal hier: http://www.luckie-online.de/delphi/win32apidl.shtml

Mike_C 16. Jan 2003 16:00

@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.

Luckie 16. Jan 2003 16:06

Was für ein beispiel-programm? Ich meinete das Tutorial von Assarbad.

Mike_C 16. Jan 2003 19:34

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:

Luckie 16. Jan 2003 19:39

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.

Mike_C 16. Jan 2003 19:43

Trotzdem:

Assabard schreibt im Tutorial:

Zitat:

... Zuallererst muss der Aufrufer aber auch die Syntax der Funktion bekannt machen
D.h. mein dynamischer Import sieht so aus

Delphi-Quellcode:
type
  TFunktion = function (a,b : integer):string;

...

procedure GetEntryPoints;
begin

...

end;
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.

Luckie 16. Jan 2003 19:44

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.

RomanK 16. Jan 2003 20:00

Hoi,
genau das hab ich mal gefragt, war aber noch zu dem Zeiten des DF:
Soviel ich mich erinnern kann kann man das nicht!

Mike_C 16. Jan 2003 20:03

OK. Vergessen wir das. Wäre es möglich, etwas in der art zu schreiben:

Delphi-Quellcode:
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;
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??


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 Uhr.
Seite 1 von 2  1 2      

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