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

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

01.03.2009, 22:02. Показов 11806. Ответов 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
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 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
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 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
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 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
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 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
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 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
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 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
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru