Biblioteka dll z delphi i PByte

0

Mam taką funkcję w bibliotece dll w delphi:

function getval(comp: PByte): double;

Muszę teraz przekazać do niej parametr comp w C#... Czym jest typ PByte? W C# mam zadeklarowaną tablicę typów double i wiem, że
do parametru comp mają trafić wartości tej tablicy, ale jak to zrobić?

0

Czym jest typ PByte?

PByte to ^Byte, czyli słownie wskaźnik na typ byte.

0

PByte w Delphi to w C# dosłownie byte*.

Wskaźniki w C# najprościej jest przekazać jako IntPtr, ale lepiej wiedzieć co ta funkcja robi — bo może lepiej zrobić marshalling do tablicy, a może (jeśli jest to wskaźnik do jednego bajta) wystarczy po prostu ref byte.

W C# mam zadeklarowaną tablicę typów double i wiem, że do parametru comp mają trafić wartości tej tablicy, ale jak to zrobić?

To jest jakiś hack - dlaczego double przekazujesz jako PByte?

Co ta funkcja właściwie robi? Bo coś mi się wydaje, że po prostu rzutuje tablicę bajtów na double, czyli de facto nie robi nic...

0
organista18 napisał(a):

Mam taką funkcję w bibliotece dll w delphi:

function getval(comp: PByte): double;

W C# mam zadeklarowaną tablicę typów double i wiem, że do parametru comp mają trafić wartości tej tablicy, ale jak to zrobić?

Czyli parametr comp to zwykły wskaźnik do tablicy, chytrze zamaskowany jako wskaźnik na pojedynczy bajt? Spróbuj po prostu zrobić:

getval(ref mojaTablica)

1 użytkowników online, w tym zalogowanych: 0, gości: 1