Einzelnen Beitrag anzeigen

Benutzerbild von Wormid
Wormid

Registriert seit: 26. Aug 2003
Ort: Steinfurt
292 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Dynamisches Array von DLL übergeben

  Alt 6. Dez 2006, 13:02
Bekomme ich hier was nicht mit?

Man kann doch dynamische Arrays aus einer DLL zurückgeben...

Delphi-Quellcode:
library xyz;

uses
  ...

type
  TTestArray = array of ShortString;

function GetTestArray: TTestArray; stdcall;
begin
  SetLength(Result, 3);
  Result[0] := 'Hallo';
  Result[1] := 'Welt';
  Result[2] := '!';
end;

exports
  GetTestArray;

end.
Delphi-Quellcode:
program test_xyz;

interface

type
  TTestArray = array of ShortString;

...
  var GetTestArray: function: TTestArray; stdcall;

implementation

procedure TestItOut;
var
  a: TTestArray;
  i: Integer;
  hDLL: THandle;
begin
  hDLL := LoadLibrary('xyz.dll');
  if hDLL <> 0 then
  begin
    GetTestArray := GetProcAddress(hDLL, 'GetTestArray');
    if GetTestArray <> nil then
    begin
      a := GetTestArray;
      ShowMessage(IntToStr(Length(a))); // Eine schicke "3" erscheint als Meldung
      for i := Low(a) to High(a) do
        ShowMessage(a[i]); // Hallo *click* Welt *click* ! *click*
      SetLength(a, 0);
      GetTestArray := nil;
    end;
    FreeLibrary(hDLL);
  end;
end;
*Edit: "Testprogramm" um dynamisches Einbinden der Funktion erweitert
Debuggers don't remove Bugs, they only show them in Slow-Motion.
  Mit Zitat antworten Zitat