Şunu yapamadim yardimci olurmusunuz.
richedit de imlec ile satir, harfler icinde gezdigimde kacinci kelimede oldugunu vermesi labele yazmasini istiyorum.
ama sadece bulundugu satirin.
richedit lines word count
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: richedit lines word count
RichEdit'te imlecin bulunduğu satır
ile seçilebilir. TStringList'in Delimiter ve DelimitedText özelliklerinden yararlanarak:
Kod: Tümünü seç
RichEdit1.Lines[RichEdit1.ActiveLineNo]
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
var
SL: TStringList;
begin
SL := TStringList.Create;
try
SL.Delimiter := ' ';
SL.DelimitedText := RichEdit1.Lines[RichEdit1.ActiveLineNo];
Caption:= Inttostr(Sl.Count);
finally
SL.Free;
end;
end;
There's no place like 127.0.0.1
Re: richedit lines word count
tesekkurler fakat simawb bu procedure bulundugu satirin toplam kelime sayisini veriyor.
(imleç nerde ise o kelime kacinci), imlec nereye giderse gittigi kelime kacinci kelime onu istiyorum.
(imleç nerde ise o kelime kacinci), imlec nereye giderse gittigi kelime kacinci kelime onu istiyorum.
Re: richedit lines word count
Daha önceki sorunuzda bahsettiğiniz Richedit1.CaretPos.X yardımıyla problemi çözebilirsiniz.
There's no place like 127.0.0.1
Re: richedit lines word count
bir türlü baaşaramadım. toplam kelimeyi veriyor gene.
SL := TStringList.Create;
SL.Delimiter := ' ';
For x := 1 to richedit1.CaretPos.x+1 do
If (richedit1.Text[x] <> #13) and (richedit1.Text[x] <> #10) and
(richedit1.Text[x] <> ' ') then
SL.DelimitedText := RichEdit1.Lines[ActiveLineNo(richedit1)];
Characters:=Sl.Count+1;
Label1.Caption := InttoStr(Characters);
SL := TStringList.Create;
SL.Delimiter := ' ';
For x := 1 to richedit1.CaretPos.x+1 do
If (richedit1.Text[x] <> #13) and (richedit1.Text[x] <> #10) and
(richedit1.Text[x] <> ' ') then
SL.DelimitedText := RichEdit1.Lines[ActiveLineNo(richedit1)];
Characters:=Sl.Count+1;
Label1.Caption := InttoStr(Characters);
Re: richedit lines word count
Merhaba.
Önceden belirleyeceğiniz tüm ayraç karakterlerini hesaba katarak kelime sayar.
Kullanımı :
Önceden belirleyeceğiniz tüm ayraç karakterlerini hesaba katarak kelime sayar.
Kod: Tümünü seç
function RichBilgisi( RichEdit:TRichEdit ): String;
function KelimeSayisi( icerik: String ): Integer;
Const
BizimAyrac = #250;
Var
Blok : String;
idxAyrac, Kelime : Integer;
begin
Result := 0;
Blok := icerik;
// Tüm Ayraç kabul edilecekleri tek paydaya, bizim bildiğimiz bir karaktere dönüştürelim.
Blok := StringReplace( Blok, ' ', BizimAyrac, [rfReplaceAll] );
Blok := StringReplace( Blok, #10, BizimAyrac, [rfReplaceAll] );
Blok := StringReplace( Blok, ',', BizimAyrac, [rfReplaceAll] );
Blok := StringReplace( Blok, '.', BizimAyrac, [rfReplaceAll] );
Blok := StringReplace( Blok, ';', BizimAyrac, [rfReplaceAll] );
Blok := StringReplace( Blok, ':', BizimAyrac, [rfReplaceAll] );
// ...
// YanYana gelenleri tekilleştirelim...
while Pos( BizimAyrac+BizimAyrac, Blok ) > 0
do Blok := StringReplace( Blok, BizimAyrac+BizimAyrac, BizimAyrac, [rfReplaceAll] );
while ( Pos(BizimAyrac, Blok) > 0 ) do
begin
idxAyrac := Pos(BizimAyrac, Blok);
System.Delete( Blok, 1, idxAyrac );
Blok := Trim(Blok);
inc(Result);
end;
if Blok <> '' then inc(Result);
end;
Var
SatirNo, KelimeSay, SatirKelime, KelimeNo : Integer;
Satir : String;
begin
SatirNo := 1+ RichEdit.Perform(EM_LINEFROMCHAR,RichEdit.SelStart,0);
KelimeSay := KelimeSayisi( Trim( RichEdit.Lines.Text ) );
SatirKelime := KelimeSayisi( RichEdit.Lines[SatirNo-1] );
Result := Format('Top.Kelime Sayısı: %d Satır: %d Satirdaki Kelime: %d ', [KelimeSay, SatirNo, SatirKelime] );
end;
Kod: Tümünü seç
procedure TForm1.RichEdit1Click(Sender: TObject);
begin
Caption := RichBilgisi( RichEdit1 );
end;
procedure TForm1.RichEdit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Caption := RichBilgisi( RichEdit1 );
end;