idhttp, timeout, stop

problemy z tworzeniem programów do obsługi sieci, internetu, e-mail itp..

idhttp, timeout, stop

Nowy postprzez wargo » sobota, 2 sierpnia 2008, 11:36

Mam problem: łączę się przez ten komponent w pętli while i chce aby za kazdym razem był host z dopiskiem i ściagało mi plik z nowa nazwą.
Jednak gdy przekroczy czas połączenia wyskakuje błąd i pętla dalej się nie wykonuje a jak od nowa nacisnę button to zaczyna od now ( własnie sobie uświadomiłem ze zacznie od nowa zawsze a nie dokończy). Jak zrobić aby nie przerywało pętli?
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    NieznanyNieznana

Re: idhttp, timeout, stop

Nowy postprzez Cyfrowy Baron » sobota, 2 sierpnia 2008, 15:34

Pokaż przykład tej pętli.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: idhttp, timeout, stop

Nowy postprzez wargo » sobota, 2 sierpnia 2008, 17:47

Kod: Zaznacz cały
int y;
y = 0;
while (y < 20)
{
TFileStream *F = new TFileStream("c:\\katalog\\nazwa_pliku.roz", fmCreate);
HTTP1->Get("88.88.88."+y, F);
delete F;
}
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    NieznanyNieznana

Re: idhttp, timeout, stop

Nowy postprzez Cyfrowy Baron » sobota, 2 sierpnia 2008, 19:33

Obiekt klasy TFileFstream w każdym obiegu pętli powinien zapisywać pobrane dane do pliku z inną nazwą w przeciwnym razie pliki będą nadpisywane i w efekcie zapisany zostanie tylko ostatni, a jeżeli ostatniego nie da się pobrać to zostanie utworzony pusty plik. Inna rzecz to dodajesz do wartości typu AnsiString wartość typu Integer bez konwersji, to może wywoływać błędy, należy dokonać konwersji int do String. Kolejna sprawa pętla kiedyś powinna się zakończyć, w przykładzie po 20 obiegach, więc należy zwiększać wartość zmiennej y o jeden w każdym obiegu pętli inaczej będzie działała w nieskończoność i w efekcie spowoduje zawieszenie programu, a wogóle to w tym konkretnym przypadku lepiej będzie użyć pętli for.
Jeżeli nie chcesz otrzymywać komunikatów o wyjątkach to użyj metody try{;}catch(...){continue;}:


Kod: Zaznacz cały
  for(int y = 0; y <= 20; y++)
  {
    TFileStream *F = new TFileStream("c:\\plik" + (String)y + ".html", fmCreate);
    try
    {
      HTTP1->Get("88.88.88." +(String)y, F);
    }
    catch(...)
    {
      continue;
    }
    delete F;
  }
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: idhttp, timeout, stop

Nowy postprzez wargo » sobota, 2 sierpnia 2008, 20:16

Ja przecież zwiększam wartośc y (tylko zapomniałem tu wpisać).
A jeśli chodzi o inny plik-to tak robię, mozliwe ze zrozumiałes to tak jak powyzszy przykład (nie zwiększałem wartości).

A co do try cath to to mi nie pomaga, i tak się pokazują błędy jednak najwiekszym problemem jest to że przerywa petlę!
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    NieznanyNieznana

Re: idhttp, timeout, stop

Nowy postprzez Cyfrowy Baron » sobota, 2 sierpnia 2008, 21:25

Prosiłem żebyś podał przykład swojej pętli. Podałeś ją, sprawdziłem u siebie i tak jak podałem u mnie wszystko działa jak należy, nie pobiera żadnych plików, gdyż pod podanym przykładowym adresem nic nie ma, ale mimo iż nic nie pobiera to pętli mi nie przerywa. Skoro Tobie przerywa, to znaczy, że masz inną pętlę niż ta, którą tutaj podałeś i to właśnie w tym tkwi błąd. Piszesz, że Twoja petla ma to i tamto, ale w podanym przez Ciebie przykładzie nie widać tego, wiec po co wogóle podawałeś przykład pętli skoro u siebie masz zupełnie inną pętlę?!?
:|((
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: idhttp, timeout, stop

Nowy postprzez wargo » niedziela, 3 sierpnia 2008, 15:11

A mógłbyć podaź jakiś przykład pobierania ipków z string list i sprawdzaniu kazdego z nich np. od 1.0.0.2 do 1.0.0.5??? :|
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    NieznanyNieznana

Re: idhttp, timeout, stop

Nowy postprzez Cyfrowy Baron » niedziela, 3 sierpnia 2008, 15:36

Nie wiem co to ipki i wogóle nie rozumiem o co pytasz.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: idhttp, timeout, stop

Nowy postprzez wargo » niedziela, 3 sierpnia 2008, 15:51

O adresy ip :|
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    NieznanyNieznana

Re: idhttp, timeout, stop

Nowy postprzez Cyfrowy Baron » niedziela, 3 sierpnia 2008, 17:57

Kod: Zaznacz cały
TStringList *Adresy = new TStringList;
Adresy->Add("10.100.3.189"); // adresy muszą istnieć i muszą zawierać adres do jakiegoś pliku (np. *.html)
Adresy->Add("192.168.01.1");
Adresy->Add("http://cyfbar.republika.pl/index.html"); // ten adres istnieje na pewno
Adresy->Add("http://programowanie.cal.pl/forum/index.php"); // ten adres istnieje na pewno

//Funkcja Get pobiera tylko konkretne pliki nie zaś całe witryny WEB

for(int y = 0; y <= Adresy->Count; y++)
  {
    TFileStream *F = new TFileStream("c:\\pobrany_" + (String)y + ".html", fmCreate);
    try
    {
      HTTP1->Get(Adresy->String[y], F);
    }
    catch(...)
    {
      continue;
    }
    delete F;
  }
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: idhttp, timeout, stop

Nowy postprzez wargo » niedziela, 3 sierpnia 2008, 20:03

A jeśli adres nie działa to nie przerwie to pęli?
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    NieznanyNieznana

Re: idhttp, timeout, stop

Nowy postprzez Darek_C++ » niedziela, 3 sierpnia 2008, 22:52

W tym wypadku nie, bo wyjątek zgłoszony przez TIdHTTP zostanie przechwycony przez blok try catch bez wyświetlenia okna z komunikatem o treści wyjątku.
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
PodziÄ™kowaÅ‚ : 66
OtrzymaÅ‚ podziÄ™kowaÅ„: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    NieznanyNieznana

Re: idhttp, timeout, stop

Nowy postprzez wargo » sobota, 16 sierpnia 2008, 19:01

Wszystko działa, dziękuję za pomoc :)
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje sieciowe

Kto przeglÄ…da forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 14 gości

cron