Ĺ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
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