Jak to zrobić? [wyszukiwanie ciągu w Memo]

0

Witam. Piszę program i <ort>niewiem</ort> jak rozwiać pewien problem:

<ort>otóż </ort>mam program z takimi komponentami:
Edit1
Edit2
Button1
Memo1

Chcę osiągnąć coś takiego:

Po wprowadzeniu ciągu znaków do Edit1 i nacisnieciu Button1, program znajduje linię zawierającą owy ciąg znaków w któreś ort! Memo1 i wyświetla ją w całości w Edit2.

Spróbuje to jakoś pokazać:

Edit1 --> Button1 --> Memo1 --> Edit2
ciąg: "szar" naciskam "ładna pogoda" efekt: wyśw. "szary dzień"
"szary dzień"
"zła droga"

Stworzyłem taki kod:


procedure TForm1.Button1Click(Sender: TObject);
var
Line : integer;
begin


if pos(edit1.text, Memo1.text) > 0 then
Line:= Memo1.Lines.IndexOf(Edit1.Text);
(edit2.text:=Memo1.Lines.Strings[line]);

end;

Program oczywiście nie działa po mojej myśli, ponieważ linia:
Line:= Memo1.Lines.IndexOf(Edit1.Text);
znajduje numer<ort> lini </ort>po zawartości całej ort! Memo1. Jeżeli wpiszę całe zdanie z jakieś lini Memo1 do Edit1 i nacisnę Button1 to oczywiście program znajdzie linię i ją wyświetli w Edit2. Jak chcę zrobić aby wystarczyło wpisać jakiś kawałek ort! a program wyświetli w Edit2 całą linię która zawiera owy ciąg wpisany o do Edit1.

Jeżeli ktoś zrozumiał o co mi chodzi prosiłbym o odpowiedź jak poprawić kod który napisałem. Zapewne chodzi tu o jakąś funkcję która określi numer <ort>lini </ort>po pozycji ciągu znaków w <ort>lini </ort>Memo1. A może jest inny lepszy sposób aby zrobić taki program. Z góry dziekuję za wszystkie odpowiedzi, bo przeszukałem mnóstwo stron w internecie w poszukiwaniu wiedzy jak zrobić ten program, całą książkę Delphi 7 kompendium wiedzy i nie potrafię zrobić, aby program działał prawidłowo. Życzę wszystkim napisania wielu udanych programów. Pozdrawiam Delphiuser.

//pisz sensowne tytuły topiców - następnym razem topic poleci do śmieci. moderator pq

0
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
for i:=0 to Memo1.Lines.Count-1 do
begin
if pos(edit1.text, Memo1.Lines[i]) > 0 then
(edit2.text:=Memo1.Lines[i]);
end;
end;
0

Dziekuję za odpowiedź. Jeszcze małe pytanko. A czy jeżeli zastosuje taki skrypt na większym pliku podpiętym pod Memo1 (ok. 2 mb) to czy pętla for wydoła zadaniu i program się bardzo znacznie nie zwolni? Pozdrawiam Delphiuser

0

to Ty chcesz plik tekstowy 2 mb na Edity rozszczepiać? :) Powodzenia :P

0

Jestem nowicjuszem w Delphi. <ort>Niewiem </ort>co znaczy "na edity rozczepiać'.
Dokładnie to chcę wyrzucić Komponent Memo1 i operacje wykonywać na pliku tekstowym. Chyba jest to możliwe? A może do takiego rozmiaru pliku zastosować bazy? Z góry dziękuję za odpowiedź. Pozdrawiam. Delphiuser

0

2mb ci sie do memo nie zmiesci, a jesli nawet to pos nie jest zbyt szybkie, zeby przszukiwac tyle linijek

//Pfu, pomylka, memo, tak jak notatnik w win9x ma ograniczenie do 64 (bodajze) kb
//Poza tym memo niczego nie podpina, tylko laduje, TextFile sie moze podpiac i na tym bym na twoim miejscu to zrobil.

0

2 mb będą podpięte pod Memo a nie pod edit. Do edit wpisuje się tylko mały ciąg. Pozdrawiam.

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