Hallo
ich versuche mich gerade mit
DLL Erstellung, komme aber nicht so Richtig weiter. Ich möchte ein Array in der
DLL befüllen lassen und dann in meiner Anwendung weiter verarbeiten.
Die
DLL soll eine .Net
DLL werden, ich möchte die
DLL Funktionen von einem
Win32 Programm und einer .Net Anwendung aufrufen können. Ich habe da so meine Probleme mit dem setzten von Pointern, es wäre Nett wenn Ihr mir ein bisschen helfen könntet.
So stelle ich mit die
DLL vor
DLL Programm
Delphi-Quellcode:
library dll_projekt1;
uses
SysUtils,
Classes;
type
PTRec = ^TREc;
TRec = record
name : String;
vorname : String;
end;
var
adresse : array [0..99] of TREC;
{$R *.RES}
procedure test(i:integer; var ???? TREC oder adresse );
// was muss ich hier einsetzen ??
begin
if i > 0 then
begin
adresse[0].nachname := '10';
adresse[1].vorname := '20';
end;
end;
exports test;
begin
end.
So stelle ich mit die Hostanwendung vor
Hostanwendung
Delphi-Quellcode:
unit Hostanwendung;
{$unsafecode on}
interface
uses
System.Drawing, .......;
type
PTRec = ^TREc;
TRec =
record
nachname :
String;
vorname :
String;
end;
adresse =
array [1..99]
of TREC;
.
.
.
.
implementation
procedure test(i:integer; ??const ff: PTREC );
stdcall;
external '
dll_projekt1.dll';
unsafe;
// wie muss die Procedure deklariert werden
.
.
.
procedure TWinForm.Button1_Click(sender: ...)
unsafe;
begin
// wie muss der Auruf jetzt sein
test(???? 1,PTREC);
textbox1.Text := adresse[1].nachname;
textbox2.Text := adresse[1].vorname;
end;
mit einfachen Variablen hat das schonmal funktioniert aber ich hätte gerne ein Array
danke schonmal für die Nette HILFE
Gregor