Hallo Zusammen,
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
Leider funktioniert die Datenübergabe an die Variable Buf nicht,
die Variable len wird aber richtig zurückgegeben. Ich vermute
es liegt am Zeiger auf Zeiger auf char.
Hat jemand eine Idee?
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
Code:
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?