Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/57: Рейтинг темы: голосов - 57, средняя оценка - 4.91
 Аватар для Lokki
4 / 4 / 2
Регистрация: 01.03.2009
Сообщений: 128

Связь с интернетом

01.03.2009, 22:02. Показов 12377. Ответов 52
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочу использовать ковертацию денег из гривны в иностранные валюту в режиме онлайн. Курсы валют нужно брать отсюда http://podrobnosti.ua/finance/ . Помогите пожалуйста.

Помогите пожалуйста. Очень надо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.03.2009, 22:02
Ответы с готовыми решениями:

Связь с интернетом
Недавно возник такой вопрос, можно-ли с помощью QBasic обратиться к файлу находящемуся на удалённом сервере? Было-бы очень интересно узнать...

Связь с интернетом
Добрый день. Решил перебраться с Сишника на WEB-программирование. Но для того что бы лучше понять что оно из себя представляет хочу...

Пропадает связь с интернетом.
В общем такая проблема. Как установил винду через несколько недель началось следущее: пропадает полносью связь с интернетом но соединение...

52
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
02.05.2009, 17:06
Студворк — интернет-сервис помощи студентам
Эй, Lokki, вот, лови. По твоему заказу.
Мог бы и сам сделать.
Вложения
Тип файла: rar valutecalc.rar (365.7 Кб, 52 просмотров)
2
 Аватар для Lokki
4 / 4 / 2
Регистрация: 01.03.2009
Сообщений: 128
02.05.2009, 17:13  [ТС]
Спасибо
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
02.05.2009, 18:54
Цитата Сообщение от Otaka Посмотреть сообщение
Хм...
Мы ведь там(в потоке скачивания) висим в цикле, и все действительно начнется заново.
Но ведь можно в том же цикле поставить проверку на какую-нибудь глобальную переменную, и если она установится в некоторое значения, то break. Правда ждать прийдется достаточно долго, ведь у InternetReadFile достаточно большой интервал ожидания. А можно (но это как-то по варварски) TerminateThread(MyDownloadThr->Handle,0). Не знаю. Я с потоками не сильно.
А кто эту глобальную переменную запустит? Основной процесс у нас болтается в цикле ожидания, а потому отрабатывать нажатие клавиши и взводить глобальную переменную некому
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
02.05.2009, 19:00
Я там имел ввиду, что дополнительный поток будет скачивать(и висеть в ожидании, но ожидание ведь имеет какой-то интервал). А основной процесс может и взвести глобальную переменную, и удалить этот поток. Все что угодно. Теоретически основной поток нельзя ничем загружать вообще, чтобы программа всегда давала какую-нибудь реакцию.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
03.05.2009, 18:40
> Теоретически основной поток нельзя ничем загружать вообще

Это-то для меня понятно. Для меня непонятно как. Запустил я в основном потоке некий поток по чтению из интернета. Допустим, он там сам по себе болтается и что-то качает. Я его запустил и ничего больше не делаю. В этом случае в основном процессе я дествительно могу отработать нажатие клавиши STOP и прибить поток. Но как мне узнать, что поток завершился нормально и что-то скачал? По таймеру раз в секунду проверять состояние потока (и в этом же месте убивать его, если наступит таймаут)? Просто при таком подходе структура программы какая-то корявая становится. Просто у меня нет опыта работы в окошечных приложениях (ге программирование по сути не линейное, а событийное), вот и спрашиваю, может вдруг как-то всё это по простому можно сделать

Ещё один вопрос. Для той же самой StringGrid я хочу отработать дабл-клик мыши на какой-то ячейке. Пока получилось только огородами: в событии MouseDown запоминаю положение мыши (беру их параметров событя), а потом в событии DblClick при помощи медода MouseToCell ковертирую в координаты ячейки (ACol, ARow). Есть ли более простой способ? Или хотя бы какая-то системная функция по определению текущих координат мыши (чтобы хотябы от MouseDown избавиться)
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
03.05.2009, 18:49

Честно говоря с потоками я сам почти не работал. Недоводилось просто.
А вот на второй вопрос отвечу. У СтрингГрида есть такие параметры как Row и вроде бы Col. Они то и показывают текущую выделенную ячейку.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
03.05.2009, 19:00
Цитата Сообщение от Otaka Посмотреть сообщение
А вот на второй вопрос отвечу. У СтрингГрида есть такие параметры как Row и вроде бы Col. Они то и показывают текущую выделенную ячейку.
С ними проблема в том, что Fixed-ячейки не выделяются, а мне ещё и на них надо мышку отрабатывать
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
03.05.2009, 19:05
Раз так, то тогда на вопрос
Или хотя бы какая-то системная функция по определению текущих координат мыши (чтобы хотябы от MouseDown избавиться)
можно сделать так:
C++
1
2
int x=Form1->ScreenToClient(Mouse->CursorPos).x;
int y=Form1->ScreenToClient(Mouse->CursorPos).y;
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
03.05.2009, 19:15
Работает
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
03.05.2009, 19:19
Вот и хорошо.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
03.06.2009, 23:12
Возникла ещё одна проблема.

Делается скачивание страницы с динамическим содержанием. И всё работает нормально. На на одной странице работает не так как надо. Есть ощущение, что где-то эта страница кэшируется.

Если что, работаю так, как написано тут http://www.rsdn.ru/article/inet/wininet.xml (код также взят оттуда). При этом на каждое скачивание делаю всё с нуля: InternetOpen, InternetConnect и т.д., затем после скачивания всё закрываю. Т.е. с залипшими дескрипторами проблем нет по определению

В протоколе http не разбираюсь, но когда-то давно читал и отложилось, что когда http-сервер отсылает страницу на клиента, то в заголовках он выставляет какую-то хрень, говорящую, что страницу не надо кэшировать (эта информация в том числе и используется проксями). Возможно, что в данном случае такой штуки нет. Но браузеры как-то делают, что если жмёшь Reload, то что-то такое умное отсылается, от чего страница с сервера перечитывается по новой (независимо от браузерного кэша, проксей и т.п.)

Кто-нибудь знает, как сие побороть?

Добавлено через 4 минуты 59 секунд
Если программу закрыть и запустить заново, то страница перечитывается. Т.е. проблема скорее всего во внутреннем системном кэшировании, а не в проксях

Добавлено через 4 минуты 3 секунды
Как зачастую бывает, как только спросишь - сразу придёт в голову идея.
В вызов HttpOpenRequest к флагам надо добавить INTERNET_FLAG_RELOAD и INTERNET_FLAG_PRAGMA_NOCACHE
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
22.11.2009, 11:44
Опять вопрос с потоками. Логику работы программы хочу немного поменять, схематически должно выглядеть так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/* Здесь мы должны запустить процесс на скачивание страницы и отображение её в окне */
void Process (void)
{
  /* Тут создаём поток, который запускает процедуру Thread. Заодно взводим
   * глобальный флажок, означающий, что у нас запущен поток на скачивание.
   * При нажатии на кнопку закрытия программы по взведённому флажку
   * дополнительно понимаем, что перед выходом надо ещё убить процесс.
   * Мы НЕ ожидаем завершения потока. Кроме запуска потока больше тут ничего не делаем.
   * В итоге в основной программе это место мы отработали, поток без ожидания 
   * запущен и внешне тормоза не проявляются, т.к. все формы можно свободно двигать и т.п. */
}
 
void Thread (void)
{
  /* Здесь мы спокойно с торомозами и прочими задержками скачиваем страницу
   * и отрисовываем её на форме. После чего гасим флажок. При выходе из
   * процедуры поток убивается автоматически.
   *
   * ТОлько есть вопрос, что надо вызвать, чтобы после отрисовки на форме
   * эти изменения реально отобразились на экране (т.е. чтобы основной процесс подцепил
   * и перерисовал эти изменения)? */
}
Такая концепция будет рабочей? Спрашиваю потому, что вроде бы как могу и сам проверить, но я даже толком не знаю, как с потоками работать, а потому скорее всего долго с этим провожусь. И есть ли у кого пример программы работы с потоками, который уложился бы в эту схему?
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
28.11.2009, 12:57
Цитата Сообщение от Otaka Посмотреть сообщение
С потоками работать можно так:
создаешь потомка класса TThread, и переопределяешь метод Execute.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class TVisualThread:public TThread
{
public:
__fastcall TVisualThread(bool CreateSuspended): TThread(CreateSuspended)
{
}
 
void __fastcall Execute()
        {
        Form1->SomeFunction();
        delete this;//Можно поток удалить из самого себя, когда он закончится.
        }
};
В твоей реализации удаления потока заключается большая ошибка. Ошибка заключается в том, что экземпляр класса у тебя удаляется ИЗ ПОТОКА, в то время как экземпляр класса создавался в ГОЛОВНОМ ПРОЦЕССЕ (или родительском потоке). Будет работать данный код или не будет, зависит от конкретной внутренней реализации new и delete внутри компилятора. Если, например, этот код оказался рабочим на 6-м Borlande'е, то он может начать ломаться на 2009-м.

Правильно в конструкторе TVisualThread добавить код "FreeOnTerminate = true;". Это свойство базового класса TThread, означает, что по завершении потока (метода Execute) экземпляр данного класса будет удалён автоматически. Причём удаление будет происходить уже в ГОЛОВНОМ ПРОЦЕССЕ (или родительском потоке) - т.е. на том же уровне, что и создавfли поток. Удаление будет происходить в момент, когда мы "возвращаемся в систему" - т.е. когда выходим из всех обработчиков событий (фактически, в том же месте, где происходит перерисовка компонентов на экран)
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.11.2009, 12:57

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

Связь консоли с Интернетом
У меня возник такой вопрос, можно ли как-нибудь написать на СИ программу, которая будет делать что-то в интернете, ну хоть что-то, например...

Постоянно обрывается связь с интернетом
Здравствуйте, у меня возникла вот какая проблема. Последнее время постоянно обрывается связь с интернетом. Вот например он работает минуты...

Через некоторое время пропадает связь с интернетом
Когда начинаю лазить по интернет (открывать разные сайты, переходить по ссылкам итд) минут через 10-20 пропадает связь с инетом. При...

Через некоторое время связь с интернетом пропадает - Dns_probe_finished_bad_config
В общем проблема такая. Подключение к интернету есть, но через некоторое время связь с интернетом пропадает. Браузер выдает ошибку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
53
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru