Вы можете вызвать процедуру следующим образом:
DLL_procedure(str[1], Length(str));
Это работает, потому что нетипизированные параметры Delphi отправляются так же, как параметры var
, они отправляются по ссылке. Компилятор отправит указатель на str[1]
, первый символ в строке, но на самом деле это указатель на всю строку. Как обычно, убедитесь, что строка действительно содержит первый символ (то есть: он не пустой).
Ваша проблема номер 1 полностью зависит от DLL. «Подпись» позволяет отправлять данные любой длины, но это не означает, что DLL подготовлена для чего-либо. Может быть, он может обрабатывать только 200 байтов за раз.