У меня проблемы с поиском наилучшего способа работы функции 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
имеет неправильное значение.