Wyszukiwanie słów w RichEdit DELPHI

0

Witam
Mam następujący problem:
Na formie w delphi mam komponent RichEdit1, Button4, Button5, oraz Edit1.Text
Moj program ma odczytywać plik tekstowy (klikając w Button4), wyświetlać zawartość w polu RichEdit1, oraz po kliknięciu w przycisk Button5 ma na sztywno znalezc dane słowo np 'nowy' (zakładając ze te slowo jest na 100% załadowane w RichEdit1), oraz ma te słowo zastąpić słowem wpisanym w Edi1.Text i na końcu zapisać jako nowy plik

Z odczytaniem i załadowanie pliku już sobie poradziłem, tzn: użyłem procedury:

procedure TForm1.Button4Click(Sender: TObject);
var
InFile:TextFile;
Data:string;
begin
RichEdit1.Lines.Clear();
if OpenDialog1.Execute then
Button4.Caption:='Plik otwarty';
begin
AssignFile(InFile, OpenDialog1.FileName);
Reset(InFile);
while not EOF(InFile) do
begin
Readln(InFile, Data);
RichEdit1.Lines.Add(Data);
end;
CloseFile(InFile);
end;

Teraz tylko nie wiem, jakiej użyć procedury by program znalazł na sztywno określone słowo, oraz zastąpił je słowem z Edit1 i zapisał na dysku jako nowy plik...

Prosze o pomoc
Pozdrawiam

0

nic prostszego...
używasz funkcji pos...
Robisz mniej więcej tak:

var
a:integer;
s:string;
begin
s:=richedit1.text;
while pos('nowy',s)<>0 do
begin
a:=pos('nowy',s);
delete(s,a,4);
insert(edit1.text,s,a);
end;
richedit1.text:=s;
end;

Musisz tylko uważać, bo jak np. 'nowy' będzie podciągiem to też go zamieni

0

czy ta procedura, będzie tez działała, jesli załaduje do pola richedit1 plik tekstowy ktory ma np 100 linijek tekstu?

mozesz mi wyjasnić co oznacza '4' w Delete? długość łancucha?

0
adiek napisał(a)

czy ta procedura, będzie tez działała, jesli załaduje do pola richedit1 plik tekstowy ktory ma np 100 linijek tekstu?

Oczywiście ;) Sam przetestuj jak nie wierzysz ;)

Większość źródeł podaje, iż długość zmiennej typu String (a więc de facto AnsiString lub WideString - w zależności od wersji Delphi) jest ograniczona jedynie dostępną pamięcią, z tym jednak bywa różnie - Windows na przykład domyślnie pozwala aplikacji adresować maksymalnie 2GB. Do normalnych zastosowań to zupełnie wystarcza więc jest to jedynie ciekawostka.

adiek napisał(a)

mozesz mi wyjasnić co oznacza '4' w Delete? długość łancucha?

Tak, oznacza ona długość łańcucha 'nowy' czyli 4...

0

dziękuje za pomoc:) już wstawiłem procedure do programu i wszystko działa łącznie z zapisywaniem do pliku:)
[browar] Pozdrawiam

0

nie ma za co... A tak w ogóle to mogłeś ten plik otwierać poprzez:

richedit1.lines.loadfromfile();

i zapisywa poprzez:

richedit1.lines.savetofile();

;-P

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