AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Rückgabe eines dynamischen Arrays aus DLL
Thema durchsuchen
Ansicht
Themen-Optionen

Rückgabe eines dynamischen Arrays aus DLL

Ein Thema von MatrixCrawler · begonnen am 23. Apr 2004 · letzter Beitrag vom 24. Apr 2004
Antwort Antwort
MatrixCrawler

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

Rückgabe eines dynamischen Arrays aus DLL

  Alt 23. Apr 2004, 14: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
MatrixCrawler

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

Re: Rückgabe eines dynamischen Arrays aus DLL

  Alt 24. Apr 2004, 15:13
*bump*

Kann mir wirklich keiner helfen?
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#3

Re: Rückgabe eines dynamischen Arrays aus DLL

  Alt 24. Apr 2004, 15:46
Das ist schlechter Stil.
Nimm einen var Parameter fuer das Array und setze die Groesse im Programm nicht in der DLL.
Die DLL fuellt nur aus. ShareMem ist dann dafuer nicht noetig.
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:42 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