Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2010, 05:16   #1
shanluu
Пользователь
 
Аватар для shanluu
 
Регистрация: 05.10.2010
Сообщений: 53
По умолчанию ValueListEditor

Парсю все формы и данные которые идут в пост с сайта и добовляю их в TValueListEditor
Всё действие проиходит в созданном потоке.

Код:
while i<length(ResponseData.Text) do  begin
               if pos('<label for="',forms1) >0 then begin
               form6.ValueListEditor1.InsertRow(Pars('<label for="',forms1,'"'),Pars('name="',forms1,'"'),true);
              delete(forms1,1,pos('</html>',forms1));


     end;
          inc(i);
        end;
в конце я сделал </html> чтоб он брал только одно значение и я не ждал пока он будет парсить всю с траницу ибо пока у меня ошибка.

Ошибка

Он находит то что надо добовляет значение в Key и Value.
скрипт продолжает работу после этого всего , но если дернуть форму, то она зависает. и через пару секунд отвисает когда заканчивается код.
Если нажать на любое ,то ничего не происходит, нету палочки для исправления и т/д. значение через пару секунд тупо пропадает.
Если закрыть окно , то выходит ошибка - "Неверный дескриптор окна".

Вообще я не знаю что сделать, не нашел более нормлаьного компанента , чтобы выводить в одном окне и - название запроса и Некий текст , который поможет мне понять , что писать в этом запросе.

Последний раз редактировалось Stilet; 06.12.2010 в 09:12.
shanluu вне форума Ответить с цитированием
Старый 06.12.2010, 09:13   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Малопонятно... Но мне кажется что вся твоя проблема в том что ты не используешь синхронизацию. Почитай про Synchronize.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.12.2010, 18:56   #3
shanluu
Пользователь
 
Аватар для shanluu
 
Регистрация: 05.10.2010
Сообщений: 53
По умолчанию

Да, действительно ты прав.
поместил
Цитата:
form6.ValueListEditor1.InsertRow(Pa rs('<label for="',forms1,'"'),Pars('name="',fo rms1,'"'),true);
delete(forms1,1,pos('</html>',forms1));
в функицю и вызвал через Synchronize и все нормально.
Всегда думал почему-то, что синхронизация нужна для многопоточных приложений , а тут один поток.

Спс за помощь
shanluu вне форума Ответить с цитированием
Старый 06.12.2010, 19:01   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а тут один поток.
Главный поток процесса, плюс твой "один поток" уже два потока дает
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.12.2010, 19:02   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а основной поток + ваш это называется один поток?
помните вы создаете дополнительный поток.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.12.2010, 19:16   #6
shanluu
Пользователь
 
Аватар для shanluu
 
Регистрация: 05.10.2010
Сообщений: 53
По умолчанию

ну да, не подумал об этом))))
я просто за поток считаю только то, что создаю =)))
shanluu вне форума Ответить с цитированием
Старый 06.12.2010, 19:24   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а тот код который создает поток по вашему не существует?
так что бросьте считать TThread потоком, это класс позволяющий начать новый поток, и точно.
а поток - это отдельное течение кода в процессе.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.12.2010, 19:28   #8
shanluu
Пользователь
 
Аватар для shanluu
 
Регистрация: 05.10.2010
Сообщений: 53
По умолчанию

это как из вопроса что первее появилось яйцо или курица.
Учту, спс за разьяснение
shanluu вне форума Ответить с цитированием
Старый 06.12.2010, 19:37   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

на данный случай ответ вполне конкретен.

винда загружает ваше приложение:
1)создает объект ядра процесс.
2)создает адресное пространство.
3)затем загружает исполняемый файл в память и подготавливает его(узнает точку входа, проверяет характеристики, подгружает длл из таблицы импорта и тд)
4)создает основной поток, который стартует в kernel32.dll и получает как параметр EntryPoint вашего приложения.
5)переходит в этот самый EntryPoint, тут собственно и начинается ваше приложение
6)ваше приложение подготавливается к работе, создает окна и тд.
7)вы уже написав код, создаете второй поток.
так что тут вышло что сначало была курица
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 06.12.2010 в 19:40.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ValueListEditor Pasha_Sh Помощь студентам 1 26.11.2010 13:19
ValueListEditor StartMis Общие вопросы Delphi 3 23.12.2009 01:02
ValueListEditor miqo Компоненты Delphi 1 23.09.2009 12:23
ValueListEditor deadh5n1 Компоненты Delphi 2 31.05.2008 22:54
ValueListEditor Artem Компоненты Delphi 3 10.07.2007 20:19