Examples Delphi

"
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_