Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Dynamisches Array von DLL übergeben (https://www.delphipraxis.net/81845-dynamisches-array-von-dll-uebergeben.html)

TheMiller 4. Dez 2006 21:42


Dynamisches Array von DLL übergeben
 
Hallo,

habe schon seit längerem ein kleines Problem. Ich habe eine Funktion und weiß nicht, wie ich ein Array aus einer DLL-Funktion an die Hauptapplikation übergeben kann.
Dabei benutze ich nicht den Delphi-Speichermanager, sondern versuche das so zu regeln, was bei den Array auch nicht klappt - sonst schon!

danke Leute!!

alzaimar 4. Dez 2006 21:51

Re: Dynamisches Array von DLL übergeben
 
Zitat:

Zitat von DJ-SPM
Dabei benutze ich nicht den Delphi-Speichermanager, sondern versuche das so zu regeln, was bei den Array auch nicht klappt - sonst schon!

:wiejetzt:


Lass doch den Client den Speicher alloziieren.

Bernhard Geyer 4. Dez 2006 21:52

Re: Dynamisches Array von DLL übergeben
 
Zeig mal ein bischen Code was du sonst so machst und wie du es beim Array machen willst

TheMiller 4. Dez 2006 22:32

Re: Dynamisches Array von DLL übergeben
 
Habe in der DLL eine Funktion (meine eigene Explode-Funktion). Da geteilten Strings möchte ich dann in ein Array packen und von da aus an die Hauptanwendung schicken. Meine Explode-funktion (auszug):

Delphi-Quellcode:
  for i:=0 to sl.Count-1 do
  begin
    for j:=StrToInt(sl2.Strings[i]) to StrToInt(sl.Strings[i])-1 do
    begin
      s:=s+p[j];
    end;
    SetLength(Content, i);
    content[i]:=s;
  end;

....

  if Assigned(Buffer) then
  begin
    StrLCopy(Buffer, PChar(content), BufferLen);
  end;
  result:=length(s);
Hatte vorher den String "s" übergeben und das hat alles supeer funktioniert. Nur ich weiß nicht, wie ich die Speicheranforderung per Array machen soll. So hatte ich den Speicher für den String "s" angefordert (Anwendung)

Delphi-Quellcode:
  len:=Explode(nil, PChar(Source), PChar(Separator), 0);
  try
    GetMem(Buffer, len+1);
    len:=Explode(Buffer, PChar(Source), PChar(Separator), len+1);
    s:=String(Buffer);
  finally
    FreeMem(Buffer);
  end;
Danke!

mkinzler 5. Dez 2006 06:45

Re: Dynamisches Array von DLL übergeben
 
Dynamische Arrays kannst du mit setLength vergrößern/verklenern (Speicher anfordern/freigeben)

TheMiller 5. Dez 2006 16:29

Re: Dynamisches Array von DLL übergeben
 
Ja schon klar. Nur wie kann ich das DynArray als Rückgabewert einer Funktion aus einer DLL in die Hauptanwendung nutzen?

Bernhard Geyer 5. Dez 2006 16:40

Re: Dynamisches Array von DLL übergeben
 
Ich denke ohne gemeinsamen Speichermanager ist das AFAIK nicht sicher möglich.

Ansonsten mußt du mit C-Like Arrays und direkte Speicheranforderung/Freigabe von Windows arbeiten.

TheMiller 5. Dez 2006 21:15

Re: Dynamisches Array von DLL übergeben
 
hm...

oder ich muss den schritt halt aufteilen: Die Funktion gibt mir lange Strings zurück, die ich in der Hauptanwendung in diese dann dort in Array packe. Finde ich zwar nicht so schön, aber so solls halt erstmal sein.

Danke euch.

Aber wenn's noch Vorschläge gibt, nehm ich sie gerne an!

oschulz 5. Dez 2006 22:02

Re: Dynamisches Array von DLL übergeben
 
Das hilft dir jetzt sicherlich nicht direkt weiter, aber ich hab genau für den Fall heute etwas in der Delphi Hilfe gesehen! Nur weiss ich leider nicht mehr wo :roll:

TheMiller 5. Dez 2006 22:38

Re: Dynamisches Array von DLL übergeben
 
Hm...

das ist gut und schlecht. Ich hab grad gesehen. Brauche es echt dringend. Nur wenn du nicht mehr weißt wo, dann hilft mir das wirklich nicht. Brauch aber die Lösung...


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:43 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz