unit uListe;
interface
uses
SysUtils, Classes;
type
TVokabel2 =
class
private
FFileName:
string;
FZeiger: Integer;
FVokabelListe: TStringList;
function GibZeigerVokabelDe(Zeiger: Integer):
string;
public
constructor Create(
const FileName:
string);
destructor Destroy;
override;
procedure VokabelNeu(Deutsch, Englisch:
string);
procedure VokabelBearbeiten(Deutsch, Englisch:
string);
function GibVokabelEng(VokabelDe:
string):
string;
function GibVokabelDe(VokabelEng:
string):
string;
function VokabelAnzahl: Integer;
property VokabelZeiger: Integer
read FZeiger;
procedure AllesSpeichern;
function GibErsteVokabelDe:
string;
function GibNaechsteVokabelDe:
string;
function GibVorherigeVokabelDe:
string;
function GibLetzteVokabelDe:
string;
function GibVokabelDeIndex(VokabelDe:
string): Integer;
procedure LoescheVokabel(
Index: Integer);
end;
implementation
constructor TVokabel2.Create(
const FileName:
string);
begin
inherited Create;
FFileName := FileName;
FZeiger := 0;
FVokabelListe := TStringList.Create;
if FileExists(FFileName)
then
FVokabelListe.LoadFromFile(FFileName);
end;
destructor TVokabel2.Destroy;
begin
AllesSpeichern;
FVokabelListe.Free;
inherited Destroy;
end;
procedure TVokabel2.VokabelNeu(Deutsch, Englisch:
string);
begin
FVokabelListe.Values[Deutsch] := Englisch;
end;
procedure TVokabel2.VokabelBearbeiten(Deutsch, Englisch:
string);
begin
VokabelNeu(Deutsch, Englisch);
end;
function TVokabel2.GibVokabelEng(VokabelDe:
string):
string;
begin
Result := FVokabelListe.Values[VokabelDe];
end;
function TVokabel2.GibVokabelDe(VokabelEng:
string):
string;
var
i: Integer;
begin
Result := '
';
for i := 0
to FVokabelListe.Count - 1
do
if SameText(VokabelEng, FVokabelListe.ValueFromIndex[i])
then
begin
Result := FVokabelListe.Names[i];
Exit;
end;
end;
function TVokabel2.VokabelAnzahl: Integer;
begin
Result := FVokabelListe.Count;
end;
procedure TVokabel2.AllesSpeichern;
begin
FVokabelListe.SaveToFile(FFileName);
end;
function TVokabel2.GibZeigerVokabelDe(Zeiger: Integer):
string;
begin
Result := '
';
//sind Vokablen vorhenden?
if FVokabelListe.Count = 0
then
Exit;
//beim Unterschreiten der unteren Grenze, weiter mit der höhsten Vokabel
if Zeiger < 0
then
Zeiger := FVokabelListe.Count - 1;
//beim Unterschreiten der oberen Grenze, weiter mit der niedrigesten Vokabel
if Zeiger > (FVokabelListe.Count - 1)
then
Zeiger := 0;
FZeiger := Zeiger;
Result := FVokabelListe.Names[FZeiger];
end;
function TVokabel2.GibErsteVokabelDe:
string;
begin
Result := GibZeigerVokabelDe(0);
end;
function TVokabel2.GibNaechsteVokabelDe:
string;
begin
Result := GibZeigerVokabelDe(FZeiger + 1);
end;
function TVokabel2.GibVorherigeVokabelDe:
string;
begin
Result := GibZeigerVokabelDe(FZeiger - 1);
end;
function TVokabel2.GibLetzteVokabelDe:
string;
begin
Result := GibZeigerVokabelDe(FVokabelListe.Count - 1);
end;
function TVokabel2.GibVokabelDeIndex(VokabelDe:
string): Integer;
begin
Result := FVokabelListe.IndexOfName(VokabelDe);
end;
procedure TVokabel2.LoescheVokabel(
Index: Integer);
begin
FVokabelListe.Delete(
Index);
end;
end.