Einzelnen Beitrag anzeigen

MatrixCrawler

Registriert seit: 23. Apr 2004
2 Beiträge
 
Delphi 7 Enterprise
 
#1

Rückgabe eines dynamischen Arrays aus DLL

  Alt 23. Apr 2004, 15:28
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
  Mit Zitat antworten Zitat