Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Delphi 5, ADO, Thread (тред, нити)
|
|||
|---|---|---|---|
|
#18+
Делаю так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Дальше: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. При компиляции Delphi ругается: Incompatible types: 'TComponent' and 'ThredMsSQL' Оно и понятно, ADO же визуальный компонент вот и ругается. Как поправить чтоб в треде можно было использовать ADO. P.S.: 1. Не говорите, что это можно делать в основной команде, мне тред и нужен, чтоб он вставлял записи в фоновом режиме так сказать (так как за раз надо вставить около 10 тыс записей) - а то что написана одна вставка, это я упрастил, на самом деле вставка идёт по циклу. 2. Создать MsSQL в основной форме и потом через synchronize вставлять записи, я думаю, тогда никакого толку от треда не будет, если вы думаете подругому скажите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2003, 15:51 |
|
||
|
Delphi 5, ADO, Thread (тред, нити)
|
|||
|---|---|---|---|
|
#18+
В дагонку: Этот код использования ADO работает в основной програме, так что сам код точно рабочий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2003, 15:53 |
|
||
|
Delphi 5, ADO, Thread (тред, нити)
|
|||
|---|---|---|---|
|
#18+
MsSQL:=TADOCommand.Create(nil); и не парься ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2003, 16:43 |
|
||
|
Delphi 5, ADO, Thread (тред, нити)
|
|||
|---|---|---|---|
|
#18+
Хорошо бы не париться.... Сделал как как подсказали, но теперь другая проблема, всё компилируется, но когда запускаю сам тред, любая команда типа: Код: plaintext 1. 2. 3. 4. 5. (я их по одной в синхронизацию одавал) выдаёт такую ошибку: progect UiS.exe raised exeption class EOleSysError with message 'Не был произведён вызов CoInitialize'. Process stoped. Use Step or Run to continue. Если всё это написать в отдельную процедуру work, а в самом треде сделать synchronize(work); то всё работает, но только в таком случае от треда толку никакого, опять же нет. Как это вылечить??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2003, 00:35 |
|
||
|
Delphi 5, ADO, Thread (тред, нити)
|
|||
|---|---|---|---|
|
#18+
Ставь в начале метода (или в конструкторе треда) CoInitialize(nil) в конце метода (или в деструкторе треда) CoUninitialize Обе функции декларированы в модуле ActiveX ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2003, 12:22 |
|
||
|
Delphi 5, ADO, Thread (тред, нити)
|
|||
|---|---|---|---|
|
#18+
Так как помоему правельней было бы сделать в конструкторе треда и диструкторе CoInitialize(nil) и CoUninitialize, соответственно, но эта ошибка в итоге всё равно вылетала (только если я весь код работы с базой не перенесу в конструктор, тогда всё в порядке). Но в итоге CoInitialize(nil) и CoUninitialize пришлось воткнуть в саму исполняемую часть треда... Почему так, почему если я инициализирую обьект в конструкторе (а он точно там инициализируется, так как я там могу с ADO работать), он не остаются инициализированным во всё время работы. Хотя вот что заметил, если я в конструкторе напишу всё тоже что и в Execute, то строка вставляется два раза, в самом конструкторе и в Execute (при этом в Execute уже ошибка о том что нет инициализации не выводится, хотя там нет CoInitialize(nil). Вот примеры кода (рабочего и не работчего): Это не рабочий, но помоему так правельнее, с ошибкой нет инициализации: Код: 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. А вот код который работает, но не понятно почему: Код: 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. 44. 45. 46. 47. 48. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2003, 18:50 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32205867&tid=2117714]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
45ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 341ms |

| 0 / 0 |
