![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обращение из Delphi к DLL написанной на C++ [D7, WinXP]
smirnoff © (2009-07-03 12:02:00)Здравствуйте! У меня вопрос по работе с типом 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. Заранее огромное спасибо!
Плохиш (2009-07-03 12:59:00) [41]
> Передается только нулевой символ
Первый символ не #00 ли случайно?
clickmaker (2009-07-03 12:59:00) [42]a: array[0..30000] of char;
b: PChar absolute a;
a2: array[0..60000] of uchar;
b2: PChar absolute a2;
это убрать
b := @a;
b2 := @a2;
smirnoff (2009-07-03 12:42:00) [43]
> func1(PChar(a), PChar(a2));Это что ли надо?
Пробовал, эффект то же, что и прежде. Передается только нулевой символ, хотелось бы чтобы весь массив был доступен для dll.
Плохиш (2009-07-03 12:23:00) [44]
> func1(b,b2);
func1(PChar(a), PChar(a2));
Это что ли надо?