pos i blad...

0

var
adresik:string;
start,stop:integer;
begin
adresik:= idHTTP1.get('http://www.google.pl);
start:=Pos('jakas nazwa',adresik);
stop:= Pos('jakas inna',adresik);
adresik:= Copy(adresik,start,stop);
RichEdit2.Text:= adresik;
end;

Mam podobny kod z inna strona i innymi szukanymi slowami pod pos. Tyle, ze mimo iz wystepuja one tylko raz w kodzie strony i to jeden blosko drugiego ( i stop zawsze za start), to pod zmienna stop pojawiaja sie jakies dzwine numery. Start zawsze wyswietla ten co trzeba. Ma kto jakis pomysl co jest zle?

P.S.
Jak mozna pokazac na progressbarze stan pobierania strony przez idhttp.get?

0

Ad 1)

adresik:= Copy(adresik, start, stop - start);

Możliwe, że będziesz musiał jeszcze odjąć 1 od "stop - start", kombinuj.

Ad 2)
Przecież w HTTPGet masz zdarzenie OnProgress! Wystarczy napisać:

Progressbar.Max := TotalSize;
ProgressBar.Position := Readed;
0

Nie wiem czy to w tym rzecz ale może to co napiszę przyda Ci się w rozwiązaniu problemu:

w copy, delete itd po nazwie zmiennej pierwszy parametr to pozycja od której mamy wykonywać daną czynność (kopiowanie, kasowanie). Jeżeli wpisałeś w pos wyrażenie to funkcja zwróci pozycję pierwszego znaku wyrażenia w przeszukiwanym stringu. Kolejny parametr to liczba znaków do kopiowania/usuwania. Twój kod jest zły bo kopiuje za dużo znaków. Użyj tego przykładu, który podał Matrox czyli copy(zmienna,start,stop-start). Kolejną sprawą jest czy chcesz aby kopiowana zmienna zawierała w sobie ciąg znaków, który wyszukiwała funkcja pos dla zmiennej stop czy nie. Jeżeli nie to towja funkcja powinna wyglądać tak copy(zmienna,start,sopt-start-1).

To chyba tyle, myślę, że załapałeś

0

Ad 1)

adresik:= Copy(adresik, start, stop - start);

Możliwe, że będziesz musiał jeszcze odjąć 1 od "stop - start", kombinuj.

Ad 2)
Przecież w HTTPGet masz zdarzenie OnProgress! Wystarczy napisać:

Progressbar.Max := TotalSize;
ProgressBar.Position := Readed;

1 - tak, teraz dziala
2 - nie moge uzyc komponentu HttpGet, bo nie pozwala otworzyc strony z niezwyklym portem ( innym niz 80 ).

Moze wiec wiecie jak pokazac postep spobierania strony komponenetem idHTTP z pakietu INDY ( nie httpget)?

0

OnWorkBegin OnWorkEnd OnWork

0

OnWorkBegin OnWorkEnd OnWork

ale jaki tu postep ?

0

:-D w onwork (loool)

0

:-D w onwork (loool)

wczesniej zrobilem w onwork takiego prymitywa zwiekszajacego progressbara co sekunde, ale to zaden realny postemp. Chodzi mi o funkcje, ktora zwroci postep pobierania danych. Co z tego, ze mi powiedziales onwork, ze takie zdarzenie jest wiem od dawna.

0

nu, ale OnWork oprócz sender ma jeszcze kilka innych fajnych prarametrów, dla tego polecam lekture helpa

1 użytkowników online, w tym zalogowanych: 0, gości: 1