Всем спасибо. Решение оказалось таким простым, что я его не заметил сразу.
Delphi самостоятельно передает указатель вместо значения если в параметре функции указано ключевое слово var. По этому если памятью нужно управлять самостоятельно то передаем нулевой элемент массива.
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
Arr: Array [0..121] of AnsiChar;
begin
SomeFunction(0, PAnsiChar('qq'), Arr[0]); //Не опечатка, нулевой элемент
end;
Функция импортирована так
Код:
int __stdcall SomeFunction(
const int hFile,
const char* varName,
char* varLabel);
function SomeFunction(hFile: Integer; varName: PAnsiChar; var varLabel:AnsiChar): Integer; stdcall;