Delphi-Quellcode:
uses DB, DBClient, MidasLib;
// unit MidasLib, damit man diese blöde Midas.dll nicht mitgeben muß
type
TWoerterbuch =
class(TClientDataSet)
constructor Create;
procedure Add(
const Word:
string);
function Filter(
const SearchWord:
string): Boolean;
procedure Delete(
const Word:
string);
procedure Clear;
procedure GetList(Result: TStrings);
//property FileName: string; // ist alles in TClientDataSet deklariert
//procedure LoadFromFile(const FileName: string = '');
//procedure SaveToFile(const FileName: string = ''; Format: TDataPacketFormat = dfBinary);
//procedure LoadFromStream(Stream: TStream);
//procedure SaveToStream(Stream: TStream; Format: TDataPacketFormat = dfBinary);
end;
procedure TWoerterbuch.Add(
const Word:
string);
begin
Insert;
try
Self['
Word'] := Word;
Post;
except
Cancel;
raise;
end;
end;
procedure TWoerterbuch.Clear;
begin
EmptyDataSet;
end;
constructor TWoerterbuch.Create;
begin
CreateDataSet;
FieldDefs.Add('
Word',
{$IF SizeOf(Char) = 2}ftWideString
{$ELSE}ftString
{$IFEND}, 30);
AddIndex('
WordIdx', '
Word', [ixUnique, ixCaseInsensitive]);
IndexName := '
WordIdx';
end;
procedure TWoerterbuch.Delete(
const Word:
string);
begin
if Locate('
Word', Word, [loCaseInsensitive])
then
inherited Delete;
end;
function TWoerterbuch.Filter(
const SearchWord:
string): Boolean;
begin
if SearchWord <> '
'
then begin
Filtered := False;
FilterOptions := [foCaseInsensitive, foNoPartialCompare];
Filter := '
[Word] LIKE ''
' + SearchWord + '
%''
';
Filtered := True;
end else
Filtered := False;
Result := RecordCount > 0;
end;
procedure TWoerterbuch.GetList(Result: TStrings);
begin
Result.BeginUpdate;
try
First;
while not Eof
do begin
Result.Add(Self['
Word']);
Next;
end;
finally
Result.EndUpdate;
end;
end;
(hoffentlich hab ich das jetzt richtig zusammenbekommen)
Oder direkt an eine datenbank ran, aber dann ohne CreateDataSet (im Constructor) und ohne SaveToFile und LoadFromFile.
Statt GetList kann man es auch direkt, über eine TDataSource, an einen DBGrid hängen.
Oder man nimmt die TDataSource als Vorfahre und das TClientDataSet in die Klasse rein.