Ĺadny brzuch
Witam :)
Banalny problem, da się sprawdzić czy dany adres istnieje url/WWW??
Problem polega na tym że, z comboboxu, pobieram nazwę z danego rekordu… nie ważne i porównuje…
Jeżeli końcówka nazwy ma *.exe to szuka programu jeżeli nie to storne…
Natomiast… jak sprawdzić przed TYM:
ShellExecute(Handle,'open','iexplore.exe',string(napis_item),nil,SW_MAXIMIZE);
Czy strona istnieje, zanim odpali przeglądarkę??
Else //tu musi być sprawdzanie czy strona o nazwie string(napis_item) istnieje w internecie… showmessage('zostaje otwarta strona'); ShellExecute(Handle,'open','iexplore.exe',string(napis_item),nil,SW_MAXIMIZE); end;
http://forum.pctown....dresu-vt995.htm
tutaj poruszałem temat:
fajnie jak by ktos zapodał przykład :)
Użytkownik Asdef edytował ten post 07 styczeń 2007, 13:09
Witam :)
Banalny problem, da się sprawdzić czy dany adres istnieje url/WWW??
Problem polega na tym że, z comboboxu, pobieram nazwę z danego rekordu… nie ważne i porównuje…
Jeżeli końcówka nazwy ma *.exe to szuka programu jeżeli nie to storne…
Natomiast… jak sprawdzić przed TYM:
ShellExecute(Handle,'open','iexplore.exe',string(napis_item),nil,SW_MAXIMIZE);
Czy strona istnieje, zanim odpali przeglądarkę??
Else //tu musi być sprawdzanie czy strona o nazwie string(napis_item) istnieje w internecie… showmessage('zostaje otwarta strona'); ShellExecute(Handle,'open','iexplore.exe',string(napis_item),nil,SW_MAXIMIZE); end;
http://forum.pctown....dresu-vt995.htm
tutaj poruszałem temat:
fajnie jak by ktos zapodał przykład :)
Pobierz plik z internetu ze wskanazego adresu np. index.html czy index.php do jakiejś lokalizacji np do tempa. Następnie sprawdź czy istniej. Jeśli istnieje to odpal przeglądarkę
Użytkownik statjacek edytował ten post 09 styczeń 2007, 07:26
Pobierz plik z internetu ze wskanazego adresu np. index.html czy index.php do jakiejś lokalizacji np do tempa. Następnie sprawdź czy istniej. Jeśli istnieje to odpal przeglądarkę
Zamiast pobierac caly plik lepiej wyslac zapytanie o sam rozmiar :) polecam http://4programmers....zenie_transferu
bardzo dobry przykladzik :)
Zamiast pobierac caly plik lepiej wyslac zapytanie o sam rozmiar :) IMHO lepiej sprawdzić kod odpowiedzi serwera np. HTTP 404 301 302 itd
Wiele serwerów wysyła rozbudowany kod HTML stanowiący stronę z informacją o tym, że dokument nie istnieje co będzie powodować błędną interpretację przez program. W delphi Możesz to do tego wykorzystać INDY i IdHTTP1 ...
IMHO lepiej sprawdzić kod odpowiedzi serwera np. HTTP 404 301 302 itd
Wiele serwerów wysyła rozbudowany kod HTML stanowiący stronę z informacją o tym, że dokument nie istnieje co będzie powodować błędną interpretację przez program. W delphi Możesz to do tego wykorzystać INDY i IdHTTP1 ...
potrafisz to zrobić? - bo ja z indy nie miałem styczności :(
Tu masz o INDY i Delphi http://dcm.ar-net.eu...ds/indy_pdf.pdf
o... czegoś takiego szukałem...
były przykłady w necie, ale to bez opisów... hmm... może coś wyskrobie :)
. hmm... może coś wyskrobie :)
Na formie umieszczasz komponent z INDY IdHTTP1 oraz IdAntiFreeze1 zapobiebajacy blokowaniu formy podczas oczekiwania na połączenie...
Oraz przykladowy kod ale w Builder C++ Przerobienie go na Delphi to praktycznie drobiazg.
void __fastcall TForm1::Button2Click(TObject *Sender) { try { IdHTTP1->Get("http://www.domena.pl/index.php"); if(IdHTTP1->ResponseCode==200) { // HTTP 200 oznacza ze serwer odnalazł żądany plik ShowMessage("Adres Pliku jest poprawny"); } } catch(EIdSocketError &s) { ShowMessage(s.Message); } catch(EIdProtocolReplyError &p) { ShowMessage(p.Message); } catch (...) { ShowMessage("Inny bład...."); } }
Użytkownik Darek_c++ edytował ten post 09 styczeń 2007, 20:45
Na formie umieszczasz komponent z INDY IdHTTP1 oraz IdAntiFreeze1 zapobiebajacy blokowaniu formy podczas oczekiwania na połączenie...
Oraz przykladowy kod ale w Builder C++ Przerobienie go na Delphi to praktycznie drobiazg.
[...]
co prawda, buildera to ja nie mam, ale C++ troszkę dziamię, więc poradze sobie... to na d* przerobić
dziękuje za pomoc :)
jutro to oblukam, teraz do pracy trzeba iść :/
nie mam szczegolnego obycia w Indym ale na moj gust metoda Get pobierze zawartosc strony, dlatego lepiej wyslac zapytanie o sam rozmiar :)
takie cos sklecilem na podstawie kodu ktorego link podalem, nawet nie testowalem bo nie mam czasu delphi wlaczyc ;)
var inOpen,inURL:HINTERNET; dwBufLen: DWord; buf: pointer; begin inOpen:= InternetOpen('Mozilla',PRE_CONFIG_INTERNET_ACCESS,nil,nil,0); inURL:= InternetOpenURL(inOpen,PChar(adresURL),'Accept: */*', StrLen('Accept: */*'),0,0); if not (inURL <> nil) then exit; dwBufLen:= 1024; GetMem(Buf, dwBufLen); HttpQueryInfo(inURL, HTTP_QUERY_STATUS_CODE,buf, dwBufLen,dwIndex); if StrPas(buf) = '200' then // ok ale i tak pewnie kod nie dziala ;p
Metoda get owszem pobierze kod strony, ale uzyskamy też odpowiedz serwera w postaci kodu protokółu HTTP jeśli dokumentu nie ma komponent IdHTTP1 zgłosi odpowiednie wyjątki które łatwo obsłużyć.
Jeszcze przyszedła mi do głowy koncepcja z Windows API i winsock i wysłaniu żądania get a nstępnie przeszukaniu kodu odpowiedzi w poszukiwaniu kodu 200 [i innych] co oznacza, że taki dokument znajduje się na serwerze lub nie.
Metoda get owszem pobierze kod strony, ale uzyskamy też odpowiedz serwera w postaci kodu protokółu HTTP jeśli dokumentu nie ma komponent IdHTTP1 zgłosi odpowiednie wyjątki które łatwo obsłużyć.
Jeszcze przyszedła mi do głowy koncepcja z Windows API i winsock i wysłaniu żądania get a nstępnie przeszukaniu kodu odpowiedzi w poszukiwaniu kodu 200 [i innych] co oznacza, że taki dokument znajduje się na serwerze lub nie.
Ja dalej pozostaje przy swoim. Łatwiej pobrać plik z serwera a następnie sprawdzić czy istnieje. Nie potrzeba do tego żadnego Indy ani żadnych innych komponentów. Daje przykład:
try
URLDownloadToFile(nil,'http://jakas_stronka/index.html, 'C:\test.txt',0, nil);
except
ShowMessage('Błąd podczeas ściągania pliku');
end; // do uses dodac URLMon
od i cała filozofia :P
Użytkownik statjacek edytował ten post 10 styczeń 2007, 15:12
Metoda get owszem pobierze kod strony, ale uzyskamy też odpowiedz serwera w postaci kodu protokółu HTTP jeśli dokumentu nie ma komponent IdHTTP1 zgłosi odpowiednie wyjątki które łatwo obsłużyć.
Jeszcze przyszedła mi do głowy koncepcja z Windows API i winsock i wysłaniu żądania get a nstępnie przeszukaniu kodu odpowiedzi w poszukiwaniu kodu 200 [i innych] co oznacza, że taki dokument znajduje się na serwerze lub nie.
caly czas chodzi o to zeby nie pobierac zawartosci strony a jedynie kod odpowiedzi (i po tej akcji, niezaleznie od kodu odpowiedzi przerywac dalsze dzialania). Napisalem "na szybko" programik (exe + source tutaj: http://www.box.net/public/egua6t5min ) sam kod zrodlowy taki:
program UrlDown; uses windows, urlmon; var aurl : string = 'http://forum.ks-ekspert.pl/'; // profiler startTime, stopTime, freq: Int64; // -- koniec begin // profiler startTime:= 0; stopTime:= 0; QueryPerformanceFrequency(freq); QueryPerformanceCounter(startTime); // -- koniec profilera' if ParamStr(1) <> '' then aUrl:= paramstr(1); UrlDownloadToFile(nil, PChar(aurl), 'C:\test.dat', 0, nil); // profiler QueryPerformanceCounter(stopTime); Str( (stopTime - startTime) div freq, aurl); MessageBox(0, PChar('operacje trwaly '+aurl+ ' ms'), 'Profiler', MB_IconInformation); end.
Użytkownik migajek edytował ten post 10 styczeń 2007, 15:33
Łatwiej pobrać plik z serwera a następnie sprawdzić czy istnieje. Nie potrzeba do tego żadnego Indy ani żadnych innych komponentów. Daje przykład: Za przeproszeniem BUCHACHA a co Powiesz jak plikiem będzie np film 600MB ?
Za przeproszeniem BUCHACHA a co Powiesz jak plikiem będzie np film 600MB ?
Za przeproszeniem j/w, Twoja metoda robi dokladnie to samo :)
w paczce pod podanym adresem http://www.box.net/public/egua6t5min zaktualizowalem kod tak ze podaje ilosc czasu ktory potrzeba na wykonanie operacji oraz dodalem programik robiacy to metoda StatJack'a - w przypadku wp.pl zajmuje mu to 1 ms dluzej, ale w przypadku serwerow wolniej odpowiadajacych na pewno zajeloby to dluzej :)
Użytkownik migajek edytował ten post 10 styczeń 2007, 15:34
Za przeproszeniem j/w, Twoja metoda robi dokladnie to samo :) Masz niestety rację :( W tym temacie zajmuję się w zadzie plikami stron www a nie innymi plikami i tego nie wziąłem pod uwagę...
Za przeproszeniem BUCHACHA a co Powiesz jak plikiem będzie np film 600MB ?
Czytaj post usera, który zalożył ten temat. On potrzebuje sprawdzić czy stronka istnieje a następnie jak istnieje otworzyć ją w domyślnej przeglądarce
@statjacek
Wiec moja metoda się do tego jak najbardziej nadaje chyba, że chodzi o sprawdzanie czy istnieją pliki a do tego jak zauważył Migawek już się nie nadaje. Poza tym po co ściągać plik na dysk jak można go otworzyć w przeglądarce z żądanym adresem www. A co najważniejsze, robiąc tak jak Proponujesz musiał byś zapisywać wszystkie pliki graficzne itd. wchodzące w skład danej strony inaczej miał byś golca...
@Migajek sprawdź może jeszcze jaką odpowiedz zwraca Twoja metoda dla serwera wysyłającego 301 np http://www.hot.pl
"Surowa" odpowiedź serwera
HTTP/1.1 302
Server: IdeaWebServer/v0.50
Date: Wed, 10 Jan 2007 16:22:16 GMT
X-Powered-By: PHP/4.4.2
Location: http://home.pl
Content-Type: text/html
Content-Length: 170
Bo mi pokazuje 200 co jest nie zgodne ze stanem faktycznej odpowiedzi serwera
HttpQueryInfo( hUrl,
HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER,
(LPVOID)&dwContent,
&dwBufLen,
0 );
ShowMessage(dwContent);
_________________________________________________________________________
Przy okazji zapytam co może być przyczyną, że poniży kod uruchomiony zarówno w środowisku testowym jak i program po trzecim kliknięciu w button się zawiesza nie zgłaszając żadnego wyjątku :(
void __fastcall TForm1::Button5Click(TObject *Sender) { HINTERNET hUrl; HINTERNET hSession; DWORD dwContent,dwBufLen; hSession = InternetOpen("IE", PRE_CONFIG_INTERNET_ACCESS, NULL, NULL, 0 ); hUrl = InternetOpenUrl( hSession, "http://forum.ks-ekspert.pl/", NULL,0,0,0); HttpQueryInfo( hUrl,HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER,(LPVOID)&dwContent, &dwBufLen,0); ShowMessage(dwContent); }
// __________
Już wiem dlaczego nie dałem
InternetCloseHandle(hUrl);
InternetCloseHandle(hSession);
Użytkownik Darek_c++ edytował ten post 10 styczeń 2007, 18:18
nie mam szczegolnego obycia w Indym ale na moj gust metoda Get pobierze zawartosc strony, dlatego lepiej wyslac zapytanie o sam rozmiar :)
takie cos sklecilem na podstawie kodu ktorego link podalem, nawet nie testowalem bo nie mam czasu delphi wlaczyc ;)
var inOpen,inURL:HINTERNET; dwBufLen: DWord; buf: pointer; begin inOpen:= InternetOpen('Mozilla',PRE_CONFIG_INTERNET_ACCESS,nil,nil,0); inURL:= InternetOpenURL(inOpen,PChar(adresURL),'Accept: */*', StrLen('Accept: */*'),0,0); if not (inURL <> nil) then exit; dwBufLen:= 1024; GetMem(Buf, dwBufLen); HttpQueryInfo(inURL, HTTP_QUERY_STATUS_CODE,buf, dwBufLen,dwIndex); if StrPas(buf) = '200' then // ok ale i tak pewnie kod nie dziala ;p
wykorzystam to oki??
działa jak przecinak... dzięki wielkie
***** :)
wykorzystam to oki??
działa jak przecinak... dzięki wielkie
***** :)
spx, przeciez po to to dalem :)
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Banalny problem, da się sprawdzić czy dany adres istnieje url/WWW??
Problem polega na tym że, z comboboxu, pobieram nazwę z danego rekordu… nie ważne i porównuje…
Jeżeli końcówka nazwy ma *.exe to szuka programu jeżeli nie to storne…
Natomiast… jak sprawdzić przed TYM:
ShellExecute(Handle,'open','iexplore.exe',string(napis_item),nil,SW_MAXIMIZE);
Czy strona istnieje, zanim odpali przeglądarkę??
Else //tu musi być sprawdzanie czy strona o nazwie string(napis_item) istnieje w internecie… showmessage('zostaje otwarta strona'); ShellExecute(Handle,'open','iexplore.exe',string(napis_item),nil,SW_MAXIMIZE); end;
http://forum.pctown....dresu-vt995.htm
tutaj poruszałem temat:
fajnie jak by ktos zapodał przykład :)
Użytkownik Asdef edytował ten post 07 styczeń 2007, 13:09
Witam :)
Banalny problem, da się sprawdzić czy dany adres istnieje url/WWW??
Problem polega na tym że, z comboboxu, pobieram nazwę z danego rekordu… nie ważne i porównuje…
Jeżeli końcówka nazwy ma *.exe to szuka programu jeżeli nie to storne…
Natomiast… jak sprawdzić przed TYM:
ShellExecute(Handle,'open','iexplore.exe',string(napis_item),nil,SW_MAXIMIZE);
Czy strona istnieje, zanim odpali przeglądarkę??
Else //tu musi być sprawdzanie czy strona o nazwie string(napis_item) istnieje w internecie… showmessage('zostaje otwarta strona'); ShellExecute(Handle,'open','iexplore.exe',string(napis_item),nil,SW_MAXIMIZE); end;
http://forum.pctown....dresu-vt995.htm
tutaj poruszałem temat:
fajnie jak by ktos zapodał przykład :)
Pobierz plik z internetu ze wskanazego adresu np. index.html czy index.php do jakiejś lokalizacji np do tempa. Następnie sprawdź czy istniej. Jeśli istnieje to odpal przeglądarkę
Użytkownik statjacek edytował ten post 09 styczeń 2007, 07:26
Pobierz plik z internetu ze wskanazego adresu np. index.html czy index.php do jakiejś lokalizacji np do tempa. Następnie sprawdź czy istniej. Jeśli istnieje to odpal przeglądarkę
Zamiast pobierac caly plik lepiej wyslac zapytanie o sam rozmiar :) polecam http://4programmers....zenie_transferu
bardzo dobry przykladzik :)
Zamiast pobierac caly plik lepiej wyslac zapytanie o sam rozmiar :) IMHO lepiej sprawdzić kod odpowiedzi serwera np. HTTP 404 301 302 itd
Wiele serwerów wysyła rozbudowany kod HTML stanowiący stronę z informacją o tym, że dokument nie istnieje co będzie powodować błędną interpretację przez program. W delphi Możesz to do tego wykorzystać INDY i IdHTTP1 ...
IMHO lepiej sprawdzić kod odpowiedzi serwera np. HTTP 404 301 302 itd
Wiele serwerów wysyła rozbudowany kod HTML stanowiący stronę z informacją o tym, że dokument nie istnieje co będzie powodować błędną interpretację przez program. W delphi Możesz to do tego wykorzystać INDY i IdHTTP1 ...
potrafisz to zrobić? - bo ja z indy nie miałem styczności :(
Tu masz o INDY i Delphi http://dcm.ar-net.eu...ds/indy_pdf.pdf
o... czegoś takiego szukałem...
były przykłady w necie, ale to bez opisów... hmm... może coś wyskrobie :)
. hmm... może coś wyskrobie :)
Na formie umieszczasz komponent z INDY IdHTTP1 oraz IdAntiFreeze1 zapobiebajacy blokowaniu formy podczas oczekiwania na połączenie...
Oraz przykladowy kod ale w Builder C++ Przerobienie go na Delphi to praktycznie drobiazg.
void __fastcall TForm1::Button2Click(TObject *Sender) { try { IdHTTP1->Get("http://www.domena.pl/index.php"); if(IdHTTP1->ResponseCode==200) { // HTTP 200 oznacza ze serwer odnalazł żądany plik ShowMessage("Adres Pliku jest poprawny"); } } catch(EIdSocketError &s) { ShowMessage(s.Message); } catch(EIdProtocolReplyError &p) { ShowMessage(p.Message); } catch (...) { ShowMessage("Inny bład...."); } }
Użytkownik Darek_c++ edytował ten post 09 styczeń 2007, 20:45
Na formie umieszczasz komponent z INDY IdHTTP1 oraz IdAntiFreeze1 zapobiebajacy blokowaniu formy podczas oczekiwania na połączenie...
Oraz przykladowy kod ale w Builder C++ Przerobienie go na Delphi to praktycznie drobiazg.
[...]
co prawda, buildera to ja nie mam, ale C++ troszkę dziamię, więc poradze sobie... to na d* przerobić
dziękuje za pomoc :)
jutro to oblukam, teraz do pracy trzeba iść :/
nie mam szczegolnego obycia w Indym ale na moj gust metoda Get pobierze zawartosc strony, dlatego lepiej wyslac zapytanie o sam rozmiar :)
takie cos sklecilem na podstawie kodu ktorego link podalem, nawet nie testowalem bo nie mam czasu delphi wlaczyc ;)
var inOpen,inURL:HINTERNET; dwBufLen: DWord; buf: pointer; begin inOpen:= InternetOpen('Mozilla',PRE_CONFIG_INTERNET_ACCESS,nil,nil,0); inURL:= InternetOpenURL(inOpen,PChar(adresURL),'Accept: */*', StrLen('Accept: */*'),0,0); if not (inURL <> nil) then exit; dwBufLen:= 1024; GetMem(Buf, dwBufLen); HttpQueryInfo(inURL, HTTP_QUERY_STATUS_CODE,buf, dwBufLen,dwIndex); if StrPas(buf) = '200' then // ok ale i tak pewnie kod nie dziala ;p
Metoda get owszem pobierze kod strony, ale uzyskamy też odpowiedz serwera w postaci kodu protokółu HTTP jeśli dokumentu nie ma komponent IdHTTP1 zgłosi odpowiednie wyjątki które łatwo obsłużyć.
Jeszcze przyszedła mi do głowy koncepcja z Windows API i winsock i wysłaniu żądania get a nstępnie przeszukaniu kodu odpowiedzi w poszukiwaniu kodu 200 [i innych] co oznacza, że taki dokument znajduje się na serwerze lub nie.
Metoda get owszem pobierze kod strony, ale uzyskamy też odpowiedz serwera w postaci kodu protokółu HTTP jeśli dokumentu nie ma komponent IdHTTP1 zgłosi odpowiednie wyjątki które łatwo obsłużyć.
Jeszcze przyszedła mi do głowy koncepcja z Windows API i winsock i wysłaniu żądania get a nstępnie przeszukaniu kodu odpowiedzi w poszukiwaniu kodu 200 [i innych] co oznacza, że taki dokument znajduje się na serwerze lub nie.
Ja dalej pozostaje przy swoim. Łatwiej pobrać plik z serwera a następnie sprawdzić czy istnieje. Nie potrzeba do tego żadnego Indy ani żadnych innych komponentów. Daje przykład:
try
URLDownloadToFile(nil,'http://jakas_stronka/index.html, 'C:\test.txt',0, nil);
except
ShowMessage('Błąd podczeas ściągania pliku');
end; // do uses dodac URLMon
od i cała filozofia :P
Użytkownik statjacek edytował ten post 10 styczeń 2007, 15:12
Metoda get owszem pobierze kod strony, ale uzyskamy też odpowiedz serwera w postaci kodu protokółu HTTP jeśli dokumentu nie ma komponent IdHTTP1 zgłosi odpowiednie wyjątki które łatwo obsłużyć.
Jeszcze przyszedła mi do głowy koncepcja z Windows API i winsock i wysłaniu żądania get a nstępnie przeszukaniu kodu odpowiedzi w poszukiwaniu kodu 200 [i innych] co oznacza, że taki dokument znajduje się na serwerze lub nie.
caly czas chodzi o to zeby nie pobierac zawartosci strony a jedynie kod odpowiedzi (i po tej akcji, niezaleznie od kodu odpowiedzi przerywac dalsze dzialania). Napisalem "na szybko" programik (exe + source tutaj: http://www.box.net/public/egua6t5min ) sam kod zrodlowy taki:
program UrlDown; uses windows, urlmon; var aurl : string = 'http://forum.ks-ekspert.pl/'; // profiler startTime, stopTime, freq: Int64; // -- koniec begin // profiler startTime:= 0; stopTime:= 0; QueryPerformanceFrequency(freq); QueryPerformanceCounter(startTime); // -- koniec profilera' if ParamStr(1) <> '' then aUrl:= paramstr(1); UrlDownloadToFile(nil, PChar(aurl), 'C:\test.dat', 0, nil); // profiler QueryPerformanceCounter(stopTime); Str( (stopTime - startTime) div freq, aurl); MessageBox(0, PChar('operacje trwaly '+aurl+ ' ms'), 'Profiler', MB_IconInformation); end.
Użytkownik migajek edytował ten post 10 styczeń 2007, 15:33
Łatwiej pobrać plik z serwera a następnie sprawdzić czy istnieje. Nie potrzeba do tego żadnego Indy ani żadnych innych komponentów. Daje przykład: Za przeproszeniem BUCHACHA a co Powiesz jak plikiem będzie np film 600MB ?
Za przeproszeniem BUCHACHA a co Powiesz jak plikiem będzie np film 600MB ?
Za przeproszeniem j/w, Twoja metoda robi dokladnie to samo :)
w paczce pod podanym adresem http://www.box.net/public/egua6t5min zaktualizowalem kod tak ze podaje ilosc czasu ktory potrzeba na wykonanie operacji oraz dodalem programik robiacy to metoda StatJack'a - w przypadku wp.pl zajmuje mu to 1 ms dluzej, ale w przypadku serwerow wolniej odpowiadajacych na pewno zajeloby to dluzej :)
Użytkownik migajek edytował ten post 10 styczeń 2007, 15:34
Za przeproszeniem j/w, Twoja metoda robi dokladnie to samo :) Masz niestety rację :( W tym temacie zajmuję się w zadzie plikami stron www a nie innymi plikami i tego nie wziąłem pod uwagę...
Za przeproszeniem BUCHACHA a co Powiesz jak plikiem będzie np film 600MB ?
Czytaj post usera, który zalożył ten temat. On potrzebuje sprawdzić czy stronka istnieje a następnie jak istnieje otworzyć ją w domyślnej przeglądarce
@statjacek
Wiec moja metoda się do tego jak najbardziej nadaje chyba, że chodzi o sprawdzanie czy istnieją pliki a do tego jak zauważył Migawek już się nie nadaje. Poza tym po co ściągać plik na dysk jak można go otworzyć w przeglądarce z żądanym adresem www. A co najważniejsze, robiąc tak jak Proponujesz musiał byś zapisywać wszystkie pliki graficzne itd. wchodzące w skład danej strony inaczej miał byś golca...
@Migajek sprawdź może jeszcze jaką odpowiedz zwraca Twoja metoda dla serwera wysyłającego 301 np http://www.hot.pl
"Surowa" odpowiedź serwera
HTTP/1.1 302
Server: IdeaWebServer/v0.50
Date: Wed, 10 Jan 2007 16:22:16 GMT
X-Powered-By: PHP/4.4.2
Location: http://home.pl
Content-Type: text/html
Content-Length: 170
Bo mi pokazuje 200 co jest nie zgodne ze stanem faktycznej odpowiedzi serwera
HttpQueryInfo( hUrl,
HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER,
(LPVOID)&dwContent,
&dwBufLen,
0 );
ShowMessage(dwContent);
_________________________________________________________________________
Przy okazji zapytam co może być przyczyną, że poniży kod uruchomiony zarówno w środowisku testowym jak i program po trzecim kliknięciu w button się zawiesza nie zgłaszając żadnego wyjątku :(
void __fastcall TForm1::Button5Click(TObject *Sender) { HINTERNET hUrl; HINTERNET hSession; DWORD dwContent,dwBufLen; hSession = InternetOpen("IE", PRE_CONFIG_INTERNET_ACCESS, NULL, NULL, 0 ); hUrl = InternetOpenUrl( hSession, "http://forum.ks-ekspert.pl/", NULL,0,0,0); HttpQueryInfo( hUrl,HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER,(LPVOID)&dwContent, &dwBufLen,0); ShowMessage(dwContent); }
// __________
Już wiem dlaczego nie dałem
InternetCloseHandle(hUrl);
InternetCloseHandle(hSession);
Użytkownik Darek_c++ edytował ten post 10 styczeń 2007, 18:18
nie mam szczegolnego obycia w Indym ale na moj gust metoda Get pobierze zawartosc strony, dlatego lepiej wyslac zapytanie o sam rozmiar :)
takie cos sklecilem na podstawie kodu ktorego link podalem, nawet nie testowalem bo nie mam czasu delphi wlaczyc ;)
var inOpen,inURL:HINTERNET; dwBufLen: DWord; buf: pointer; begin inOpen:= InternetOpen('Mozilla',PRE_CONFIG_INTERNET_ACCESS,nil,nil,0); inURL:= InternetOpenURL(inOpen,PChar(adresURL),'Accept: */*', StrLen('Accept: */*'),0,0); if not (inURL <> nil) then exit; dwBufLen:= 1024; GetMem(Buf, dwBufLen); HttpQueryInfo(inURL, HTTP_QUERY_STATUS_CODE,buf, dwBufLen,dwIndex); if StrPas(buf) = '200' then // ok ale i tak pewnie kod nie dziala ;p
wykorzystam to oki??
działa jak przecinak... dzięki wielkie
***** :)
wykorzystam to oki??
działa jak przecinak... dzięki wielkie
***** :)
spx, przeciez po to to dalem :)