ich habe ein Problem bei der Parameterübergabe an eine C-Funktion
die in eine DLL ausgelagert ist.
Die Deklaration und Beschreibung mit Daten des Parameters in C sieht wie folgt aus
int load(uc **buffer, int *len) {
...
memcpy(*buffer, data, len);
...
}
Eine Speicherreservierung findet in der C-Funktion nicht statt.
Ich habe den Delphi-Aufruf so gestaltet
type uc = char; Puc =^char; pPuc =^puc; ..... Buf : ppuc; Data : string; i,res,len : Integer; begin New(Buf); Buf^ := AllocMem(1024); len := 0; res := load(@Buf, @len); Data := ''; for i := 0 to len - 1 do Data := Data + pUC(Integer(Pointer(Buf^)) + i)^; Dispose(Buf); end;
die Variable len wird aber richtig zurückgegeben. Ich vermute
es liegt am Zeiger auf Zeiger auf char.
Hat jemand eine Idee?