У меня возникли проблемы с определением наилучшего способа работы функции delphi с байтовым массивом из .net.
Сигнатура delphi выглядит так:
procedure Encrypt(
var Bytes: array of byte;
const BytesLength: Integer;
const Password: PAnsiChar); stdcall; export;
Код C # выглядит так:
[DllImport("Encrypt.dll",
CallingConvention = CallingConvention.StdCall,
CharSet = CharSet.Ansi)]
public static extern void Encrypt(
ref byte[] bytes,
int bytesLength,
string password);
Пропуск var
и ref
перед объявлением байтового массива, казалось, не удалось, но требуется ли это, поскольку Я буду изменять только содержимое массива, а не сам массив?
Кроме того, по какой-то причине я не могу получить длину массива в delphi, если я удалю BytesLength
параметр Length (Bytes)
не будет работать, если я добавлю параметр BytesLength
, Length (Bytes)
начнет работать, но BytesLength
] имеет неправильное значение.