jetzt habe ich die Code bisschen geändert, aber ich kriege doch die falschen Werte und danach Zugriffsverletzung. Hier ist die Code:
Delphi-Quellcode:
type
TValue = record
StrValue: String[6];
IntValue: Integer;
end;
TValues = array of TValue;
PVDIINT: ^TValues;
var
VDIINT: TValues;
PVDIIN: PVDIINT;
function VDIIWERT(PVDIIN: PVDIINT; Feldnummer: integer): integer; external 'VDIDLL.dll'; stdcall;
my func;
begin
SetLength(VDIINT,Length(VDIINT)+1);
VDIINT[High(VDIINT)].StrValue := 'test';
VDIINT[High(VDIINT)].IntValue := 2;
PVDIIN := @VDIINT;
cRet := IntToStr(VDIIWERT(PVDIIN, StrToInt(res1)));
end;
Und in der
Dll:
Delphi-Quellcode:
type
TValue = record
StrValue: String[6];
IntValue: Integer;
end;
TValues = array of TValue;
PVDIINT: ^TValues;
function VDIIWERT(PVDIIN: PVDIINT; Feldnummer: integer): integer;
var
j: Integer;
arStri : array[1..10] of String;
arInt : array[1..10] of Integer;
begin
temp;
j:= 0;
VDIINT := @PVDIIN;
arStri[1] := VDIINT[0].StrValue;
end;
Ich mache bestimmt was falsches, aber was? Vielleicht muss ich noch einen record machen und da mein TValues deklarieren und noch einen Pointer auf neuen record machen oder?