Hallo Leute,
bin relativ neu in Delphi und habe folgendes Problem.
Ich möchte über eine Funktion in einer
DLL ein dynamisches Array von integer-Werten erstellen und in mein Hauptprogramm zurückgeben.
Das Problem das ich habe ist allerdings, das alle Werte im Array 0 sind und ausserdem das Programm bei jedem aufrufen der Funktion ca 13MB mehr Umgebungsspeicher belegt.
Wenn ich dieselbe Funktion in das Hauptprogramm integriere habe ich allerdings keine Probleme.
Hier der
DLL-Code
Delphi-Quellcode:
type
TintegerArray = Array of Integer;
function rollPrivate(c:integer) : TintegerArray; stdcall;
var
count :integer;
ergArray :TintegerArray;
temp,erg,t2 :integer;
begin
SetLength(ergArray,c);
for count := 1 to c do
begin
t2 := 0;
erg := 1;
temp := random(6)+1;
erg := temp;
while temp = 6 do
begin
t2 := random(6)+1;
erg := erg+t2;
temp := t2;
end;
ergArray[count-1] := erg;
end;
Result := ergArray;
end;
Und hier der Code aus dem Main-Programm
Delphi-Quellcode:
type
TintegerArray = Array of Integer;
[...]
var
tArray :TIntegerArray;
c :integer;
begin
...
else if diceOps.ItemIndex = 2 then
begin
mainForm.diceErg.Items.Clear;
SetLength(tArray,diceCount.Value);
tArray := rollPrivate(diceCount.Value);
for c := 0 to diceCount.Value-1 do
mainForm.diceErg.Items.Add(IntToStr(tArray[c]));
end;
diceForm.Close;
end;
Habe in beiden Codes die ShareMem-
Unit als erstes deklariert....
Ich hofe ihr könnt mir helfen und ich habe mich nicht zu lächerlich gemacht