HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Egy szöveges állomány szavainak, betűinek és sorainak számát meghatározó program készítése


Példaprogram letöltése

5055 bájt

A Word-ben található egy olyan menüpont, mely az aktuális dokumentumról készít egy statisztikát, melyben feltünteti a szavak, betűk, sorok, bekezdések számát. Mai cikkünkben ezt a funkciót fogjuk megvalósítani a Delphi segítségével, azaz egy tetszőleges betöltött szöveges állományról mi is elkészítjük ezt a statisztikát.

A mellékelt példaprogramban egy Memo-ba töltjük be a vizsgálandó szöveget, majd egy Statusbar segítségével íratjuk ki az eredményt. Létrehozunk egy Count nevű eljárást, mely paraméterként a Memo tartalmát várja. Lássuk, hogyan is épül fel.
Procedure TForm1.Count(str:string);
var
  i, Words, Letters, Rows:integer;
  BeforeSpace:boolean;
Begin
Létrehoztunk három változót. A Letters-ben a betűk, a Words-ben a szavak, míg a Rows-ban a sorok számát fogjuk tárolni. A vizsgálat elején mindhárom értéket lenullázzuk.
  Letters:=0;
  Words:=0;
  Rows:=0;
Amennyiben a Memo tartalma nem üres, elvégezzük a vizsgálatot.
  if str<>'' then
  begin
Ha a Memo nem üres, az azt jelenti, hogy legalább 1 sora van. Ezért a Rows-nak ezt adjuk értékül.
    Rows:=1;
A BeforeSpace nevű logikai változóval a két szó közti elválasztást figyeljük. Ez lehet a szóköz, az Enter, és a soremelés karakterek valamelyike.
    BeforeSpace:=False;
    for i:=1 to Length(str) do
    begin
      if BeforeSpace and
        (str[i]<>' ') and
        (str[i]<>#13) and
        (str[i]<>#10) then Inc(Words);
      BeforeSpace:=(str[i]=' ') or
                (str[i]=#13) or
                (str[i]=#10);
Amennyiben a fenti három elválasztó karakter egyikével sem egyezik meg az éppen aktuális karakter, a betűk számát növeljük 1-el.
      if (str[i] in [' ',#13,#10]) then
      begin
      end
      else
        Inc(Letters);
Amennyiben az Enter vezérlőkarakterre bukkanunk, a sorok számát növeljük meg.
      if (str[i] in [#13]) then
        Inc(Rows);
    end;
  end;
Végül a kapott eredményeket a SatusBar-on jelezzük ki.
  StatusBar1.Panels[0].Text:='Szavak száma: '+IntToStr(Words);
  StatusBar1.Panels[1].Text:='Karakterek száma: '+IntToStr(Letters);
  StatusBar1.Panels[2].Text:='Sorok száma: '+IntToStr(Rows);
end;
A függvény meghívását a szöveget betöltő gomb OnClick eseményéhez rendeltük.
procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
    Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
  if OpenDialog1.FileName<>'' then
    Count(Memo1.Text);
end;
A kapott eredményeket összehasonlíthatjuk a Word által számított adatokkal, amennyiben abba betöltjük az adott szöveget, majd az Eszközök -> Szavak száma menüpontra kattintunk.



Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2003 évkönyv 609. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |