59 lines
1.1 KiB
ObjectPascal
59 lines
1.1 KiB
ObjectPascal
|
unit slistform;
|
||
|
|
||
|
{$mode objfpc}{$H+}
|
||
|
|
||
|
interface
|
||
|
|
||
|
uses
|
||
|
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;
|
||
|
|
||
|
const specimen: string = 'Enter by the narrow gate; for the wide gate has a broad' +
|
||
|
' road which leads to destruction and there are many people going that way. The' +
|
||
|
' narrow gate and the hard road lead to life and only a few find it.';
|
||
|
|
||
|
type
|
||
|
TForm1 = class(TForm)
|
||
|
LBWords: TListBox;
|
||
|
LCount: TLabel;
|
||
|
Mdisplay: TMemo;
|
||
|
procedure FormCreate(Sender: TObject);
|
||
|
end;
|
||
|
|
||
|
var
|
||
|
Form1: TForm1;
|
||
|
|
||
|
implementation
|
||
|
|
||
|
{$R *.lfm}
|
||
|
|
||
|
{ TForm1 }
|
||
|
|
||
|
procedure TForm1.FormCreate(Sender: TObject);
|
||
|
var
|
||
|
sl, noDuplicates: TStringList;
|
||
|
j: integer;
|
||
|
begin
|
||
|
MDisplay.Text := specimen;
|
||
|
sl := TStringList.Create;
|
||
|
noDuplicates := TStringList.Create;
|
||
|
try
|
||
|
sl.CommaText := specimen;
|
||
|
sl.Sort;
|
||
|
|
||
|
for j := 0 to sl.Count-1 do
|
||
|
if (noDuplicates.indexOf(sl[j]) > 0) then noDuplicates.Add(sl[j]);
|
||
|
|
||
|
LBWords.Items.AddStrings(noDuplicates);
|
||
|
LCount.Caption := Format(
|
||
|
'Specimen text has %d words of which %d are unique',
|
||
|
[sl.Count, noDuplicates.Count]
|
||
|
);
|
||
|
finally
|
||
|
sl.Free;
|
||
|
noDuplicates.Free;
|
||
|
end;
|
||
|
end;
|
||
|
|
||
|
end.
|
||
|
|