Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
ADO и DLL
|
|||
|---|---|---|---|
|
#18+
Было у меня несколько работающих самостоятельных функций, определённых в модуле ADOEx. Я из этого модуля сделал DLL, т.е. после каждой функции приписал STDCALL, экспортнул и ничего в текстах не менял! Ну и в приложении прописал соответствующую строчки в DataModule, из секции uses модулей приложения поудалял уже ненужные ссылки на ADOEx. И тут начались глюки. Сплошные Access Violation (и не только) в разных местах... После долгих мучений выяснил, что после включения компа глюк происходит только в одной функции в строчке qCount.Free. Причем не сразу, сначала эта функция нормально вызывается раз пять. После многократного запуска программы в режиме отладки ошибки начинают сыпаться хаотически в разных местах. Приведённая ниже функция напрямую из приложения не вызывается (хотя может), она используется внутри DLL. В приложении в DM function .........; StdCall; external ADOExDll; В DLL Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2003, 09:41 |
|
||
|
ADO и DLL
|
|||
|---|---|---|---|
|
#18+
function ADOCount (ADS: TCustomADODataSet): integer; stdcall; begin if ADS is TADOQuery then ... Все верно. И никогда не будет работать! В Длл и в Ехе разные RTTI. Работа с DLL в Delphi ничего кроме проблем не приносит. Проблемы можно разрешить только кардинальным способом - не использовать Dll, т.е. устранив их причину. Сам одно время экспериментировал с Dll, и очень рад, что от них и использую сейчас пакеты (то что имеет расширение *.bpl). Так что настоятельный Вам совет - последуйте моему примеру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2003, 11:30 |
|
||
|
ADO и DLL
|
|||
|---|---|---|---|
|
#18+
DLL использовать можно, только не надо передавать туда объекты через параметры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2003, 12:25 |
|
||
|
ADO и DLL
|
|||
|---|---|---|---|
|
#18+
Другие же функции, где я передаю компонент работают!!! И ещё, это правильно?: Function Fun(Apar: PChar):Pchar; Var Par:string; Begin Par := string(APAR); ………что делаем с Par Result := Pchar(Par); End; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2003, 23:08 |
|
||
|
ADO и DLL
|
|||
|---|---|---|---|
|
#18+
minva не совсем правильно, по крайней мере вывод данных стоит использовать функцию StrPCopy... а предварительно выделить память под указатель, причем чтоб выделило приложение ее, дабы потом смогло уничтожить. в качестве примера как это сделать, посмотри API функцию GetUserName. Александр Спелицин Если вы не умеете работать с dll, то это и будет головная боль. Нужно просто грамотно работать и в итоге можно получить прекрасный механизм. А bpl... меня в них как минимум не устраивает то что невозможно их загружать динамически, что в случае с библиотеками я более чем часто использую (LoadLibrary) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2003, 03:30 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32260609&tid=2116960]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
71ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 251ms |
| total: | 422ms |

| 0 / 0 |
