Ĺadny brzuch
Mam koponent memo, a w nim np.
w zerowej lini: ala
w 1 lini: ma
w 2 lini: kota
Jak zrobić aby np. w drugim memo program wypisał w których liniach występuje dane szukane słowo?
Próbowałem coś takiego ale mi nie wyszło to co chciałem
var s: string; text: string; linia: integer; begin s:= Edit1.Text; Text:= Tekst.Text; linia:= Pos(s, Text); ShowMessage('Litere ' + s + ' znaleziono w: ' + IntToStr(linia)+ ' lini:'); end;
Mam koponent memo, a w nim np.
w zerowej lini: ala
w 1 lini: ma
w 2 lini: kota
Jak zrobić aby np. w drugim memo program wypisał w których liniach występuje dane szukane słowo?
Próbowałem coś takiego ale mi nie wyszło to co chciałem
var s: string; text: string; linia: integer; begin s:= Edit1.Text; Text:= Tekst.Text; linia:= Pos(s, Text); ShowMessage('Litere ' + s + ' znaleziono w: ' + IntToStr(linia)+ ' lini:'); end;
Miałem podobny problem i użyłem IndexOf, np
numer: integer;
stringi: tstrings;
numer := stringi.IndexOf('jakiś tekst');
To zwraca numer linii z podanym tekstem, w przypadku braku zwraca -1. Powinno zadziałać :D
A nie mozesz w petli sprawdzic Posem dla kazdej linii memo czy dany tekst w niej wystepuje?
Przepraszam, ale nie czaje tego co napisaliście panowie:
@krajew4 chyba nie o to chodziło? :(
var P,I: integer; S: string; begin for i:=0 to Tekst.lines.count-1 do s:=Tekst.lines[i]; P:= pos(Edit1.Text, Tekst.Lines.Text); ShowMessage(IntToStr(P)); end;
@Narwany
Mógłbyś to tak bardzie na przykładzie jakiś editów czy innych memo napisać?
Soory, ale naprawdę się starałem.
Tak jak mowi krajew4, robisz w petli sprawdzanie kazdej linni po koleji. O ile rozwiązanie IndexOf zwróci Ci nr wiersza jezeli tekst występuje raz, to w przypadku wystepowania tego słowa np w 1 i 3 linii zwróci Ci tylko jedna...
Dziękuje wszystkim za pomoc. Oto moje rozwiązanie tego problemu
procedure TForm1.Button2Click(Sender: TObject); var P,I: integer; S: string; begin s:=Tekst.Lines[0]; P:=StrToInt(Label1.Caption); P:=P+1; Label1.Caption:=IntToStr(P); if pos(Edit1.Text, S) > 0 then RichEdit1.Lines.Add(''+Edit1.Text +' istnieje w lini numer ' +Label1.Caption); Tekst.Lines.Delete(0); end; procedure TForm1.Button3Click(Sender: TObject); var I: integer; q: string; begin q:=Tekst.Lines.Text; Label1.Caption:='0'; for I:=1 to Tekst.lines.Count do Button2.Click; Tekst.Lines.Text:=q; end;
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
w zerowej lini: ala
w 1 lini: ma
w 2 lini: kota
Jak zrobić aby np. w drugim memo program wypisał w których liniach występuje dane szukane słowo?
Próbowałem coś takiego ale mi nie wyszło to co chciałem
var s: string; text: string; linia: integer; begin s:= Edit1.Text; Text:= Tekst.Text; linia:= Pos(s, Text); ShowMessage('Litere ' + s + ' znaleziono w: ' + IntToStr(linia)+ ' lini:'); end;
Mam koponent memo, a w nim np.
w zerowej lini: ala
w 1 lini: ma
w 2 lini: kota
Jak zrobić aby np. w drugim memo program wypisał w których liniach występuje dane szukane słowo?
Próbowałem coś takiego ale mi nie wyszło to co chciałem
var s: string; text: string; linia: integer; begin s:= Edit1.Text; Text:= Tekst.Text; linia:= Pos(s, Text); ShowMessage('Litere ' + s + ' znaleziono w: ' + IntToStr(linia)+ ' lini:'); end;
Miałem podobny problem i użyłem IndexOf, np
numer: integer;
stringi: tstrings;
numer := stringi.IndexOf('jakiś tekst');
To zwraca numer linii z podanym tekstem, w przypadku braku zwraca -1. Powinno zadziałać :D
A nie mozesz w petli sprawdzic Posem dla kazdej linii memo czy dany tekst w niej wystepuje?
Przepraszam, ale nie czaje tego co napisaliście panowie:
@krajew4 chyba nie o to chodziło? :(
var P,I: integer; S: string; begin for i:=0 to Tekst.lines.count-1 do s:=Tekst.lines[i]; P:= pos(Edit1.Text, Tekst.Lines.Text); ShowMessage(IntToStr(P)); end;
@Narwany
Mógłbyś to tak bardzie na przykładzie jakiś editów czy innych memo napisać?
Soory, ale naprawdę się starałem.
Tak jak mowi krajew4, robisz w petli sprawdzanie kazdej linni po koleji. O ile rozwiązanie IndexOf zwróci Ci nr wiersza jezeli tekst występuje raz, to w przypadku wystepowania tego słowa np w 1 i 3 linii zwróci Ci tylko jedna...
Dziękuje wszystkim za pomoc. Oto moje rozwiązanie tego problemu
procedure TForm1.Button2Click(Sender: TObject); var P,I: integer; S: string; begin s:=Tekst.Lines[0]; P:=StrToInt(Label1.Caption); P:=P+1; Label1.Caption:=IntToStr(P); if pos(Edit1.Text, S) > 0 then RichEdit1.Lines.Add(''+Edit1.Text +' istnieje w lini numer ' +Label1.Caption); Tekst.Lines.Delete(0); end; procedure TForm1.Button3Click(Sender: TObject); var I: integer; q: string; begin q:=Tekst.Lines.Text; Label1.Caption:='0'; for I:=1 to Tekst.lines.Count do Button2.Click; Tekst.Lines.Text:=q; end;