Всем привет!
{Есть объявление}
TMyProc = procedure (ID: Cardinal; pPoints: ^Single; Count: Cardinal);
{Здесь выскакивает [Error] Unit1.pas(12): Identifier expected but '^' found}
{Переменная}
var
MyProc: TMyProc;
{Инициализация ф-ей из DLL}
DLLHandle: THandle;
@MyProc := GetProcAddress (DLLHandle, 'MyProc');
{Дальше хочу вызвать ее}
Points: array[1..200] of Single;
MyProc (0, @Points[1], 100);
В чем проблема?
PS: Может у кого есть пример работающего кода как подключать DLL (делалась в C++) к программе на Delphi? Буду очень благодарен!
Здравствуйте, Аноним, Вы писали:
А>В чем проблема?
В том, что механистическое копирование не всегда правильно срабатывает. В отличие от C, паскаль ожидает типом формального параметра идентификатор типа и ничто другое.
Самый простой вариант сделать этот код нормально работающим — объявить как
(.... const Points : Single ...)
Возможно, я бы даже убрал тип и объявил бы просто
(.... const Points ; ...)
Самый простой путь — объявить тип PSingle = ^Single, а потом использовать в объявлении созданный тип.
Спасибо, получилось.
Остается вопрос про то, как передать указатель на начало массива, т.к. вылетает Access Volation in DLL...
А>PS: Может у кого есть пример работающего кода как подключать DLL (делалась в C++) к программе на Delphi? Буду очень благодарен!