|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.01.2012, 00:14 | #1 |
Пользователь
Регистрация: 18.12.2006
Сообщений: 50
|
Использование потока в dll
Нужно вызвать из dll поток. Обработать в нем данные и вернуть в основной модуль программы.
Вот какая dll получилась PHP код:
PHP код:
Тут обрабатывается сам поток PHP код:
PHP код:
при первом нажатии кнопки res.balance возвращается пустым. ((( При повторном возвращается то что нужно. Последний раз редактировалось Mr.Dmitry; 21.01.2012 в 00:17. |
21.01.2012, 00:19 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
код то не ждет пока ктото запишет данные в переменную, а при втором разе там уже есть данные от завершенного первого.
кто ж так асинхронную работу ведет?. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
21.01.2012, 01:05 | #3 | |
Пользователь
Регистрация: 18.12.2006
Сообщений: 50
|
Цитата:
Разве я вот так Код:
|
|
21.01.2012, 01:32 | #4 |
Пользователь
Регистрация: 18.12.2006
Сообщений: 50
|
В общем где и что мне нужно записать чтоб сразу при первом обращении мне выдавалось нужная инфа?
|
21.01.2012, 13:19 | #5 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
вообще раз вы хотите ждать результата, то тут нет смысла в потоке. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
21.01.2012, 14:51 | #6 |
Пользователь
Регистрация: 18.12.2006
Сообщений: 50
|
Хмммммм. Первоночально суть вопроса была токова, как сделать чтоб во время отправки запроса через IDhttp форма не подвисала, если интернет слабый, а label выводилось сообщение "Запрос отправлен пожалуйста подождите." Мне сказали что тут без потока не обойтись. Начал разбираться с потоками, и теперь когда уже почти сделал, вы говорите что тут нет смысла в потоке? Так кому верить? Что делать?
PS Я понимаю что я записываю переменную в потоке, и это переменная не передается в основной модуль функции при первом прогоне, при втором прогоне, в перменной уже остались данные от предыдущего запуска и поэтому все выводится. Поэтому как я понимаю нужно как то синхронизировать работу функции потока с основным телом функции в dll. Но как я не пытался это сделать ни черта не выходит. На всех форумах описан элементарный способ синхронизации. Код:
Последний раз редактировалось Mr.Dmitry; 21.01.2012 в 14:56. |
21.01.2012, 15:00 | #7 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
то что вы хотите делается уж точно не тупым присваиванием, так как оно требет здесь и сейчас.
я говорил про ваш код. кстати, а затем длл то для потока? я бы просто отправлял сообщение из потока форме что запрос завершен, и данные теперь актуальный. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
21.01.2012, 15:35 | #8 |
Пользователь
Регистрация: 18.12.2006
Сообщений: 50
|
Тогда может вы подскажите как это делается?
Как я уже говорил первоначально в длл была функция, которая вызывалась из основной программы. Получала кучу данных и там дальше уже обрабатывались полученные данные и выводились в таблицу. Но было замечено что при слабом интернете программа подвисает. Провисания были не кретичны, но пользователем же не объяснишь что все нормально, щас все путем будет. Был начат поиск устранения такого провисания. На другом форуме сказали что без потоков не обойтись. До этого я ни когда не работал с потоками и разбираюсь с ними около одной недели, смог сделать код который описан в первом посте. Поэтому может быть ты уже ткнешь меня носом и скажешь как же нужно это сделать если не тупым присвоением? Как вернуть данные res.balance, res.name, res.surname и т.д из dll в основную форму используя поток? PS Прикрепил файл с проектом Последний раз редактировалось Mr.Dmitry; 21.01.2012 в 16:13. |
22.01.2012, 14:53 | #9 |
Пользователь
Регистрация: 18.12.2006
Сообщений: 50
|
С исходниками стало еще тяжелее помочь? (
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание потока в dll | kenji | Общие вопросы Delphi | 3 | 04.11.2011 13:13 |
bass.dll Скорость мать его потока... | Дворник | Мультимедиа в Delphi | 5 | 24.08.2010 09:37 |
Использование Dll | xmaksimca | Общие вопросы Delphi | 0 | 16.05.2010 18:36 |
Использование метода free после завершения потока | Denager | Общие вопросы Delphi | 4 | 29.08.2008 10:13 |
микшер на два потока в проигрывателе музыки. проигрыватель сделан на основе библиотеки Bass.dll | D-fens | Мультимедиа в Delphi | 4 | 08.06.2007 20:36 |