AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Probmelm mit: "Dynamisches Einbinden einer DLL"
Thema durchsuchen
Ansicht
Themen-Optionen

Probmelm mit: "Dynamisches Einbinden einer DLL"

Ein Thema von Mike_C · begonnen am 16. Jan 2003 · letzter Beitrag vom 17. Jan 2003
Antwort Antwort
Seite 1 von 2  1 2      
Mike_C

Registriert seit: 2. Jan 2003
Ort: Ladenburg
18 Beiträge
 
Delphi 5 Professional
 
#1

Probmelm mit: "Dynamisches Einbinden einer DLL"

  Alt 16. Jan 2003, 13:47
Hi!

Ich hab das Problem schon mal angesprochen, in "Exporttable einer DLL". Rauszufinden, welche Funktionen exportiert werden, ist kein Problem (mehr ).

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.
:: I don't think I'm crazy - it's only the circumstances that make me appear a crazy guy ::
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2
  Alt 16. Jan 2003, 14:13
Kuck mal hier: http://www.luckie-online.de/delphi/win32apidl.shtml
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Mike_C

Registriert seit: 2. Jan 2003
Ort: Ladenburg
18 Beiträge
 
Delphi 5 Professional
 
#3
  Alt 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.
:: I don't think I'm crazy - it's only the circumstances that make me appear a crazy guy ::
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4
  Alt 16. Jan 2003, 16:06
Was für ein beispiel-programm? Ich meinete das Tutorial von Assarbad.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Mike_C

Registriert seit: 2. Jan 2003
Ort: Ladenburg
18 Beiträge
 
Delphi 5 Professional
 
#5
  Alt 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

Edit: OOPS, ok war'n Browser-Prob
:: I don't think I'm crazy - it's only the circumstances that make me appear a crazy guy ::
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6
  Alt 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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Mike_C

Registriert seit: 2. Jan 2003
Ort: Ladenburg
18 Beiträge
 
Delphi 5 Professional
 
#7
  Alt 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.
:: I don't think I'm crazy - it's only the circumstances that make me appear a crazy guy ::
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8
  Alt 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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von RomanK
RomanK

Registriert seit: 7. Jun 2002
Ort: Kirchheim unter Teck
1.036 Beiträge
 
Delphi 7 Personal
 
#9
  Alt 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!
Roman Keller
Krieg ist Gottes Art den Amerikanern Geographie beizubringen!
  Mit Zitat antworten Zitat
Mike_C

Registriert seit: 2. Jan 2003
Ort: Ladenburg
18 Beiträge
 
Delphi 5 Professional
 
#10
  Alt 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??
:: I don't think I'm crazy - it's only the circumstances that make me appear a crazy guy ::
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:44 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