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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2010, 03:37   #21
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

Почему неверен, у автора топика так и сделано
CS - критическая секция, создаваемая в основном потоке, все обращения к Caption защищены этой секцией - ничего не нарушено
_Engine_ вне форума Ответить с цитированием
Старый 28.11.2010, 03:41   #22
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

синхрониз предназначен для разового считывания/передачи данных компоненту визуальному, а не чтоб гонять в нем циклы и слипы.
Цитата:
у автора топика так и сделано
у него нет синхрониз вообще, и привязки к форме тоже(за инсключением http, но он не визуален, и то я уже сказал об этом)
Цитата:
CS - критическая секция, создаваемая в основном потоке, все обращения к Caption защищены этой секцией - ничего не нарушено
то есть я чтоб прочесть или изменить чтото в заголовке обязан каждый раз входить в секцию?(что из потока, что из основы)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.11.2010, 03:43   #23
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

Цитата:
function SetTimeOutJS(Str: String): Integer;
var
I: Integer;
S: String;
begin
S := '")'',';
I := Pos(S, Str);
if I > 0 then
begin
S := Copy(Str, I + Length(S), Length(Str));
I := Pos(')', S);
if I > 0 then
begin
S := Trim(Copy(S, 1, I - 1));
I := StrToIntDef(S, -1);
if I > 0 then
Result := I
else
Result := 0;
end;
end;
end;

begin
Otvet1 := HTTP_BOT.get('http://' + Сайт);
h := SetTimeOutJS(Otvet1);
Sleep(h);//в этот момент вешается форма на h секунд
HTTP_BOT.get('http://' + Сайт + Ur);
end;
Почему-то уверен, что эта часть обернута методом Synchronize
_Engine_ вне форума Ответить с цитированием
Старый 28.11.2010, 03:45   #24
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

http://programmersforum.ru/showpost....0&postcount=11
выложен же был код иной.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.11.2010, 03:45   #25
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
то есть я чтоб прочесть или изменить чтото в заголовке обязан каждый раз входить в секцию?(что из потока, что из основы)
В данном случае, да, иначе, как сам говоришь - Access Violation

03:48

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
http://programmersforum.ru/showpost....0&postcount=11
выложен же был код иной.
Вначале был такой код, дальше я не смотрел, т.к. не интересно.

Последний раз редактировалось mihali4; 28.11.2010 в 18:56.
_Engine_ вне форума Ответить с цитированием
Старый 28.11.2010, 09:13   #26
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Если idHTTP у Вас общий - то, возможно, что форма у Вас вешается не на h секунд, а на время загрузки страницы компонентом...
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 28.11.2010, 18:41   #27
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Несколько ссылочек на почитать:
http://www.transl-gunsmoker.ru/2010/...g-post_20.html
http://www.transl-gunsmoker.ru/2010/05/blog-post.html
http://www.delphikingdom.ru/asp/view...catalogid=1355
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 29.11.2010, 14:31   #28
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

И всё же чем лучше заменить SLLEP что бы избежать подвешивания на время паузы?
или в место SLLEP(h) выстовить ReadTimeout, я читал что он делает паузу перед отсылкой сообщений, но как сделать тогда что-то на подобе
Код:
ReadTimeout(h);//в этот момент вешается форма на h секунд
HTTP_BOT.get('http://' + Сайт + Ur);
Я так правда пытался, но не чего не вышло

Последний раз редактировалось bulldog5293; 29.11.2010 в 16:02.
bulldog5293 вне форума Ответить с цитированием
Старый 08.12.2010, 21:58   #29
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

И всё же попробывал как предлагал пепел феникса, но
Код:
HTTP_BOT.get('сайт');
      begin
 while not Terminated do for I := 1 to h do//подвисает cдесь
  begin
   Sleep(1000);
   Synchronize(DoAnything);
HTTP_BOT.get('сайт'+ g1);

procedure BOT.DoAnything;
begin
Form1.Caption := IntToStr(i);
end;

Последний раз редактировалось bulldog5293; 08.12.2010 в 22:41.
bulldog5293 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Sleep(50); за 63 мс... или за 47... Teksa Общие вопросы C/C++ 8 20.07.2010 08:34
Функция Sleep(); VadEr Общие вопросы Delphi 6 10.09.2009 17:45
Проблема с Sleep! k1r1ch Общие вопросы Delphi 11 20.06.2009 19:12
Функция для Sleep russian-stalker Общие вопросы Delphi 5 12.09.2008 16:40
Альтернатива sleep Zuzlan Общие вопросы Delphi 2 01.11.2007 01:44