Delphi XE и DLL
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Объясните как работать с Dll
так чтобы в них можно было без палева передать параметры и получать от туда данные.
Так как у меня нефига не получается, подключаю dll , и не могу туда передать параметры , код компилится нормально , а во время работы ошибка на ошибке,
Параметры должны быть понятными для Windows типов. Вместо строк передавать указатели на строки (PChar, PAnsiChar, PWideChar), не передавать в качестве параметров объекты. Четко представлять, что в общем случае приложение использует свой менеджер памяти, а DLL работает с менеджером памяти Windows. Это если коротко! Ну и изучать матчасть
Вместо строк передавать указатели на строки (PChar, PAnsiChar, PWideChar)
в DLL можно использовать WideString.. думаю с ними работать куда удобнее...
Объясните как работать с Dll
так чтобы в них можно было без палева передать параметры и получать от туда данные.
Так как у меня нефига не получается, подключаю dll , и не могу туда передать параметры , код компилится нормально , а во время работы ошибка на ошибке,
Или подробнее опиши свою ситуацию, или выложи исходники.. посмотрим в чём проблема.. а иначе получишь только общие рекомендации..
в DLL можно использовать WideString.. думаю с ними работать куда удобнее...
Действительно! Не знал... Век живи, век учись
Спасибо огромное , статьи очень помогли ))) WideString рулит 
П.с. не закрывайте тему будет пару вопросов по коду кое какому )))
Где код решения твоего вопроса? думаю тут многим будет интересно посмотреть..
Тема не будет закрыта, но мы уже как-то привыкли, что 1 топик = 1 вопрос. Если вопрос намечается по дальнейшей работе с сабжем, то, думаю, можно и сюда. Но иначе отдельным топиком будет удобней 
завтра с утра выложу исходники примера, исходники на работе.
А вопрос будет по теме этого топика, разбор исходников )
Доброго времени суток, !
Выложил исходники, по прежнему пытаюсь решить вопрос передачи данных между DLL и EXE.
Не выложил раньше потому что пытался самостоятельно решить проблему.
Прошу помочь разобраться и довести до ума исходники.
Этот кусочек кода находится в Client\Unit1.pas
procedure TFormMain.ToolButton2Click(Sender: TObject); var A: I_OrdersRecord_Array; X: Integer; begin A :=GetAllOrders_() ; // или DoSomething1 <=с этой функцией работает for X := 0 to A.Count - 1 do ListBoxLog.Items.Add(A[X].OrderName); end;
(При выполнении этого кода вылетает ошибка обращения к памяти)
Всё дело в том что не работает моя функция GetAllOrders_, , а функция DoSomething1 , работает, в чём трабла не пойму. 
И ещё посоветуйте как лучше организовать передачу динамических массивов,
Ибо способ реализованный в исходниках по сути просто скопипастил.
И как то не получается его автоматизировать чтобы рационально организовать передачу разных динамических массивов .
Код лежит тут dll\UnitClass.pas
Надеюсь , понятно всё объяснил )))
Хелп ми )))
| Вложение | Размер |
|---|---|
| Src.zip | 409.03 КБ |
Хелп 





