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 2 von 2     12   
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#11
  Alt 16. Jan 2003, 21:16
Du brauchst also einen Pascal Interpreter. Da könnte ich dir die JVCL Komponente TJvInterpreterProgram vorschlagen.


Hier ist mal eine mögliche Anwendung:
Delphi-Quellcode:
procedure MyTest(var s: string; a: Integer); stdcall;
begin
  ShowMessage(s + ' ' + IntToStr(a));
  s := 'Was anderes';
end;

exports
  MyTest;

initialization
  GlobalJvInterpreterAdapter.
    AddExtFun('system', 'MyTest', 0, ParamStr(0), 'MyTest', -1, 2, [varByRef or varString, varInteger], varEmpty);
end.
Und der zu interpretierende Code sieht so aus:
Delphi-Quellcode:
unit Test;
interface

implementation

function main: string;
var s: string;
begin
  s := 'Hallo'
  MyTest(s, 1000);
  MyTest(s, 300);
end;

end.
  Mit Zitat antworten Zitat
Mike_C

Registriert seit: 2. Jan 2003
Ort: Ladenburg
18 Beiträge
 
Delphi 5 Professional
 
#12
  Alt 17. Jan 2003, 13:22
Hi!

@jgb:
also, wenn ich dich richtig verstanden habe, brauche ich eine DLL, die ungefähr so aussieht:

Delphi-Quellcode:
uses
  SysUtils,
  Classes,
  JvComponent,
  JvInterpreter,
  Messages,
  Dialogs,
  Forms;

{$R *.res}

{$E lib}

var
  JvInterpreterProgram : TJvInterpreterProgram;

procedure MyTest(var s: string; a: Integer); stdcall;
begin
  ShowMessage(s + ' ' + IntToStr(a));
  s := 'Was anderes';
end;

exports
  MyTest;

begin
  JvInterpreterProgram := TJvInterpreterProgram.Create(Application.MainForm);
  JvInterpreterProgram.Adapter.AddExtFun('system', 'MyTest', 0, ParamStr(0), 'MyTest', -1, 2, [varByRef or varString, varInteger], varEmpty);
end.
und in der Anwendung eine Rountine, die dann etwa das macht:

Delphi-Quellcode:
//Funktion importieren (statisch für Test)
procedure MyTest(var s: string; a: Integer); stdcall;external'libInterpret.lib';

...

//Anwendung...
procedure TForm1.Button1Click(Sender: TObject);
var s: string;
begin
  s := 'Hallo';
  MyTest(s,1000);
  MyTest(s,300);
end;
:: I don't think I'm crazy - it's only the circumstances that make me appear a crazy guy ::
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#13
  Alt 17. Jan 2003, 15:59
Man benötigt nicht unbedingt eine DLL. Das PE-Format (Windows Executable) unterstützt auch das Exportieren von Funktionen in einer exe-Datei.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 19:51 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