Einzelnen Beitrag anzeigen

neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#10

Re: C++-Lib/Dll in Delphi einbinden

  Alt 14. Nov 2005, 01:11
array of char sollte nicht
Code:
char *
enstsprechen, da Delphi bei array of ohne Range zusätzlich noch eine Längenbeschreibung ablegt.

Delphi-Quellcode:
type
  PStrList = ^TStrList;
  TStrList = array [0..0] of PChar;


var pLst : PStrList;
    lst : TStringList;
    i : Integer
begin
  GetMem(pLst, lst.Count * SizeOf(Pointer));
  try
    for i := 0 to lst.Count - 1 do
        pLst[i] := PChar(lst[i]); // weil hiner einem Delphi String eigentlich ein PChar liegt
    // Call C - Function
    func(pLst, lst.Count);
  finally
    FreeMem(pLst); // kann nicht in der anderen Dll freigegeben werden, da C einen anderen Speichermanager hat
  end;
end;
C-Definition:
Code:
__stdcall void func(char **, int);
procedure func(pStrs : PStrList; iLen : Integer); stdcall;
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat