Biblioteka dll z delphi i PByte

Biblioteka dll z delphi i PByte
O1
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 12 lat
0

Mam taką funkcję w bibliotece dll w delphi:

Kopiuj
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ć?

edytowany 1x, ostatnio: organista18
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Czym jest typ PByte?

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


Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 19 godzin
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...

LU
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 11 lat
0
organista18 napisał(a):

Mam taką funkcję w bibliotece dll w delphi:

Kopiuj
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ć:

Kopiuj
getval(ref mojaTablica)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.