Показать сообщение отдельно
  #5  
Старый 04.06.2014, 22:52
Specialistvlad Specialistvlad вне форума
Прохожий
 
Регистрация: 13.04.2012
Сообщения: 5
Репутация: 10
Смех Решено

Всем спасибо. Решение оказалось таким простым, что я его не заметил сразу.

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;
Ответить с цитированием