ďťż

Ładny brzuch

Witam
Mam ListBox i PopupMenu przy OnPopup chciałbym aby sprawdzany został zaznaczony element czy nie zawiera określonego ciągu znaków np: 'www.' jeśli tak to pokaże sie element menu 'Otwórz Link' (ale to już mniejsza o to ;) ). Próbowałem tak:
s := Elementy.Items[Elementy.ItemIndex];  for i := 4 to Length(s) do    begin       s1 := s[i-4] + s[i-2] + s[i-1] + s[i];       if s1 = 'www.' then         Adres.Visible := True       else         Adres.Visible := False;
ale nie działa tak wogóle to nie wiem co jest źle :unsure: Proszę o pomoc



Chyba o to chodzi?
s := Elementy.Items[Elementy.ItemIndex]; if Pos(s) = 1 then //ew. Pos(s) > 0  Adres.Visible := True else  Adres.Visible := True;
Użytkownik kAzek edytował ten post 07 styczeń 2006, 22:48
Działanie funkcji Pos jest takie:
i = Pos('tekst_szukany', 'tekst_przeszukiwany')
Funkcja zwraca pozycję 'tekstu_szukanego' w 'tekście_przeszukiwanym', jeśli = 0, tekstu nie znaleziono. W Twoim przypadku będzie więc tak:
if Elementy.ItemIndex = -1 then Exit; s := Elementy.Items[Elementy.ItemIndex]; Adres.Visible := Pos('www', s) > 0;

//EDIT: Funkcji Pos używa się właśnie po to, by znaleźć jeden tekst w drugim. Spróbuj tego powyżej, powinno działać. Oczywiście, możesz sobie 'www' zamienić na coś innego, np: 'http://' ;)
Użytkownik Kokoszek edytował ten post 07 styczeń 2006, 22:57
Dziękuje bardzo :) :)
Użytkownik BloodSam edytował ten post 07 styczeń 2006, 22:56


Wypróbuj to w onclick listboxawith ListBox1 do  if (ItemIndex>-1) then    if Pos('www.',Items[ItemIndex])=1 then    begin    PopupMenu:=PopupMenu1;    PopupMenu1.Items[0].Caption:='Otwórz '+Items[ItemIndex]    end else PopupMenu:=nil;

Będziesz musiał szukać po spacji :)

var s:string; begin s:='www.google.pl'; if pos('www.',s)>0 then begin s:=copy(s,pos('www.',s),length(s)-pos('www.',s)+1) ; if pos(' ',s)<>0 then s:=copy(s,1,pos(' ',s)-1); edit1.Text:=s; end;
thx Migajek B)
Użytkownik Cyrkiel edytował ten post 08 styczeń 2006, 13:33
var s:string; begin s:='www.google.pl'; if pos('www.',s)>-1 then begin s:=copy(s,pos('www.',s),length(s)-pos('www.',s)+1) ; if pos(' ',s)<>0 then s:=copy(s,1,pos(' ',s)-1); edit1.Text:=s; end;
Czy mógł by mi ktoś wytłumaczyć co tu zaszło ???
Użytkownik BloodSam edytował ten post 07 styczeń 2006, 23:43

Czy mógł by mi ktoś wytłumaczyć co tu zaszło ???

No teraz to wiem co i jak i będę umiał zastosować to w przyszłości. A nie na zasadzie kopiuj/wklej, przecież to nie ktoś ma pisać za mnie tylko ja sam ;) Wszystkim dziękuję za pomoc.


No teraz to wiem co i jak i będę umiał zastosować to w przyszłości. A nie na zasadzie kopiuj/wklej, przecież to nie ktoś ma pisać za mnie tylko ja sam ;) Wszystkim dziękuję za pomoc.

Bueee, nagle poczułem się staro :P Ale z trenowaniem migajek ma rację - bez tego nic. Na pewno "kopiuj i wklej" z nikogo nie zrobi programisty :) Co do ostatniego przykładu, to ja jednak byłbym za tym, żeby zapisać sobie wynik wyszukiwania do zmiennej:
var  v: Integer; ...  v := Pos('www.', s);
bo później nie trzeba wielokrotnie wywoływać funkcji Pos z tymi samymi parametrami :)
Użytkownik Kokoszek edytował ten post 08 styczeń 2006, 11:52
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •