Mega Code Archive

 
Categories / Delphi / Examples
 

Neoturk forum - text dosyalar

" 12 Aralık 2005 19:00 text dosyalar arkadaşlar merhaba ben bir text dosya içerisinde örneğin içinde "111" geçen satırları bulup bu satırlar içerisindeki "abc" kelimsini "zxy" olarak değiştirmek istiyorum bunun için nasıl bir kodlama yapmam gerekiyor yardımcı olursanız sevinirim alperkurt " cevap: aşağıda 2 farklı "find-replace"(bul ve değiştir) kod örneği vardır, Kod: - 1 - ********************************************************** *** memo1 içindeki "neo"ları "neoturk" olarak değiştir *** ********************************************************** memo1.Text := StringReplace(memo1.Text,'abc','xyz',[rfReplaceAll]); Kod: - 2 - ************************************************************* *** richedit içindeki "abc"ları "xyz" olarak değiştir *** ************************************************************* function bul_ve_degistir(RichEdit: TRichEdit;SearchText, ReplaceText: string): Boolean; var startpos, Position, endpos: integer; xsart:boolean; //richediti memo olarak düzenleyebilirsiniz. //RicheEdit:Tmemo;.... gibi.. kullanın esnekliğinizi! begin startpos := 0; xsart:=false; with RichEdit do begin endpos := Length(RichEdit.Text); Lines.BeginUpdate; while FindText(SearchText, startpos, endpos, [stMatchCase])<>-1 do begin endpos := Length(RichEdit.Text) - startpos; Position := FindText(SearchText, startpos, endpos, [stMatchCase]); Inc(startpos, Length(SearchText)); SetFocus; SelStart := Position; SelLength := Length(SearchText); richedit.clearselection; SelText := ReplaceText; xsart:=true; end; Lines.EndUpdate; end; result:=xsart; //final end; //kullanım örneği: procedure TForm1.Button1Click(Sender: TObject); begin if bul_ve_degistir(Richedit1, 'abc', 'xyz') then showmessage('değişiklik yapıldı') else showmessage('herhangi bir değişiklik yapılmadı'); //final end; sorunuzun tam cevabı olarak aşağıdaki örneği kullanabilirsiniz: procedure Tform1.button1click(sender:Tobject); //içinde "111" geçen satırları bulup bu satırlar içerisindeki //"abc" kelimsini "zxy" olarak değiştirmek istiyorum var m:integer;x:string; begin for m:=0 to memo1.lines.count-1 do begin x:=memo1.lines[m]; if pos('111',x)>0 then memo1.lines[m]:=StringReplace(x,'abc','zxy',[rfReplaceAll]); end; //final end; kodu daha da süslüyorum ve genel hale getiriyorum: procedure bul_ve_degistir(memo:Tmemo;aranan,bulunan,yerinekonan:string); var m:integer;x:string; begin for m:=0 to memo.lines.count-1 do begin x:=memo.lines[m]; if pos(aranan,x)>0 then memo.lines[m]:=StringReplace(x,bulunan,yerinekonan,[rfReplaceAll]); end; //final end; kullanımı: //button1 onclick ... bul_ve_degistir(memo1,'111','abc','xyz'); .... daha estetik ve genele dökülmüş oldu. bul_ve_degistir(memo2,'111','abc','xyz'); şeklinde kullanırsanız memo2 içinde gereken işlemleri yapacaktır.... daha da abartılıp formlar arası memolarda da kullanılabilir. bul_ve_degistir(form5.memo28,'111','abc','xyz'); //uses unit5 eklenmiş olmalıdır. kolay gelsin.......... saygılarımla_ neoturk_