Как передать массив целых чисел Delphi в DLL Prism?

Я прочитал и успешно попробовал ответ на Как я могу передать строку Delphi в DLL Prism?, но задался вопросом, можно ли использовать аналогичный метод для передачи массива целых чисел Delphi (статического или динамического) в DLL Prism.


person Warren Stanley    schedule 09.09.2010    source источник
comment
UnmanagedType.LPArray кажется вероятной отправной точкой для расследования.   -  person Marcelo Cantos    schedule 09.09.2010


Ответы (2)


Самый простой (без маршалинга) - закодировать массив с помощью BASE16 или BASE64 в строку Unicode и передать строку.

person Eugene Mayevski 'Callback    schedule 09.09.2010

У меня нет времени писать полный рабочий пример, но вот ключевые моменты для адаптации примера, который вы упомянули в другом вопросе:

объявить тип с длиной вашего буфера

type
  [MarshalAs(UnmanagedType.LPArray)]
  TBuffer = array[0..-length-]of integer;

и для выполнения операций в буфере не забудьте использовать модификатор "закреплен"

var BufferPointer: ^TBuffer; pinned;

...

  BufferPointer := @the_buffer[0];
person someone    schedule 09.09.2010
comment
Спасибо. Я бесполезен в этом и был бы очень признателен за полный пример, если у кого-то есть время и желание. Ваши минуты сэкономят мне часы. Не в спешке. - person Warren Stanley; 13.09.2010