![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте! У меня вопрос по работе с типом puchar. Такая ситуация: имеется dll файл написанный на C++Builder. Из dll экспортируется функция следующим образом
Код:
extern "C" bool __declspec( dllexport ) func1(unsigned char *input, unsigned char *output); В проекте Delphi импортируем эту функцию: Код:
function func1(input: pointer; output: pointer): bool; cdecl; external 'my.dll' name '_func1'; Работаем с импортированной функцией func1: Код:
procedure TForm1.Button1Click(Sender: TObject); var i :integer; s : string; a: array[0..30000] of char; b: ^uchar; a2: array[0..60000] of uchar; b2: ^uchar; begin StrCopy(a, pchar(Memo1.Text)); b := @a; b2 := @a2; func1(b,b2); for I := 0 to Length(Memo1.Text) do s := s + chr(a2[i]); Memo2.Text := s; end; Проблема в том, что func1 видит только первый (нулевой) символ массива "a", а необходимо, чтобы весь массив был доступен для dll. Вот в dll выводится на экран параметр input Код:
ShowMessage((char *)input); Объясните, пожалуйста, как правильно передать указатель на uchar из Delphi в dll. Заранее огромное спасибо! |