unit Unit1;
interface
uses
Winapi.Windows,
Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.ExtDlgs,
Vcl.StdCtrls;
type
TForm1 =
class(TForm)
Memo1: TMemo;
Button1: TButton;
OpenTextFileDialog1: TOpenTextFileDialog;
Button2: TButton;
Label1: TLabel;
Button3: TButton;
SaveTextFileDialog1: TSaveTextFileDialog;
Button4: TButton;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function Seps(As_Arg: ANSIChar): Boolean;
begin
Seps := As_Arg
in
[#0..#$1F, '
', '
.', '
,', '
?', '
:', '
;', '
(', '
)', '
/', '
\', '
-'];
end;
function WordCount(CText: ANSIstring): Longint;
var
Ix: Word;
Work_Count: Longint;
begin
Work_Count := 0;
Ix := 1;
while Ix <= Length(CText)
do
begin
while (Ix <= Length(CText))
and (Seps(CText[Ix]))
do
Inc(Ix);
if Ix <= Length(CText)
then
begin
Inc(Work_Count);
while (Ix <= Length(CText))
and (
not Seps(CText[Ix]))
do
Inc(Ix);
end;
end;
WordCount := Work_Count;
end;
//------------------------------------------------------------------------------
function TokenCount(
const cText:
String): integer;
var s:
string;
nPos: integer;
begin
result:=0;
s:=trimright(cText);
nPos:=Pos(#32,s);
if (nPos=0)
and (length(s)>0)
then inc(result);
while nPos>0
do
begin
inc(Result);
System.Delete(s,1,nPos);
s:=trimleft(trimright(s));
nPos:=Pos(#32,s);
end;
end;
//------------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Clear;
if OpenTextFileDialog1.execute
then
Memo1.Lines.loadfromfile(OpenTextFileDialog1.FileName);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Label1.Caption:= INTTOSTR(WORDCOUNT(Memo1.Text));
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if SaveTextFileDialog1.execute
then
Memo1.Lines.SaveTofile(SaveTextFileDialog1.FileName);
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Label2.Caption:= INTTOSTR(TOKENCOUNT(Memo1.Text));
end;
procedure TForm1.FormShow(Sender: TObject);
begin
Label1.Caption:= INTTOSTR(WORDCOUNT(Memo1.Text));
end;
end.