Einzelnen Beitrag anzeigen

Benutzerbild von Speedmaster
Speedmaster

Registriert seit: 4. Mär 2005
Ort: Karlsruhe
535 Beiträge
 
Delphi 2005 Personal
 
#14

Re: BrainyTrainy - Vokabeltrainer

  Alt 23. Mär 2005, 23:12
Habe sowas auch mal geschrieben, Code ist leider verlorengegangen habe nur eine alte Version ist auch ein bischen her wo ich die geschrieben hatte:

Delphi-Quellcode:
unit Vok;
 
interface
 
uses
  StdCtrls, IniFiles, SysUtils, Dialogs;
 
const
  E_LOADVOK = ' Error in FUNCTION LoadVok ';
  E_WRITEVOK = ' Error in FUNCTION WriteVok ';
  E_READVOK = ' Error in FUNCTION ReadVok ';
  E_COMPVOK = ' Error in FUNCTION CompVok ';
 
 
type
  TVok = class
    public
      Vokabel: array of array of String; // Dynamischer Array in dem die Vokabeln abgelegt werden
      VokRiZ: array of array[0..1] of byte; // Hier wird gezählt wie oft eine Vokabel richtig war
      VokFaZ: array of array[0..1] of byte; // Hier wird gezählt wie oft eine Vokabel falsch war
      Vokakt: integer; // Aktuelle Vokabel
      IniFile: TIniFile; // Name der Aktuellen Vokabel Datei
      VokAbf: smallint; // Enthält die Nummer der abgefragten bedeutung
      (* Allgemein:
        Sollte ein Fehler beim laden auftreten gibt die funktion den
         Wert False zurück *)
 
      function LoadVok(FileN: String): Boolean; // Laden der Vokabeln
      function WriteVok(FileN: String): Boolean; // Speichert Vokabeln
      function ReadVok(InpField: TEdit; OutField: TLabel): Boolean; // Liest nexte Vokabel ein
      function CompVok(VString: ShortString; var IX: Smallint): Boolean; // vergleicht die Vokabeln
    end;
 
 
 
implementation
 
var Voktype: TVok;
 
 
function TVok.LoadVok(FileN: String): Boolean;
var
  VNum: integer;
  VBed: smallint;
begin
  try
    (*BEGIN*) 
    Voktype.IniFile := TiniFile.Create(FileN);
    for VNum:=0 to 2147483647   do begin // Max Anzahl an Vokabeln werden hochgezählt
        for VBed:=0 to 32767 do begin // Max Anzahl an Bedeutungen pro Vokabel werden hochgezählt
          Voktype.Vokabel[VNum,VBed] := IniFile.ReadString(inttoStr(VNum),inttoStr(VBed),''); // Läd Vokabeln
          if Voktype.Vokabel[VNum,VBed] = 'then Break; // Wenn Alle Bedeutungen geladen wurden Unterbrechen
        end;
      if Voktype.Vokabel[VNum -1,0] = 'then Break; // Wenn Max Anzahl an Vokabeln geladen wurden Unterbreche
    end;
    (*END*) 
    Result := True;
  except
    Result := False;
  end;
end;
 
 
function TVok.WriteVok(FileN: String): Boolean;
var
  VNum: integer;
  VBed: smallint;
begin
  try
    (*BEGIN*) 
    Voktype.IniFile := TiniFile.Create(FileN);
    for VNum:=0 to 2147483647   do begin // Max Anzahl an Vokabeln werden hochgezählt
        for VBed:=0 to 32767 do begin // Max Anzahl an Bedeutungen pro Vokabel werden hochgezählt
          IniFile.WriteString(inttoStr(VNum),inttoStr(VBed),Voktype.Vokabel[VNum,VBed]); // Schreibt Vokabeln
          if Voktype.Vokabel[VNum,VBed +1] = 'then Break; // Wenn Alle Bedeutungen geladen wurden Unterbrechen
        end;
      if Voktype.Vokabel[VNum +1,0] = 'then Break; // Wenn Max Anzahl an Vokabeln geladen wurden Unterbreche
    end;
    (*END*) 
    Result := True;
  except
    Result := False;
  end;
end;
 
 
function TVok.ReadVok(InpField: TEdit; OutField: TLabel): Boolean;
var
  VOKNUM: smallint;
begin
  try
    (*BEGIN*) 
    if Voktype.CompVok(InpField.Text,VOKNUM) = False then
      MessageDlg(E_COMPVOK, mtWarning, [mbOk], 0); // Sollte ein Fehler bei CompVok auftreten gibt es eine Fehlermessage
 
 
    (*END*) 
    Result := True;
  except
    Result := False;
  end;
end;
 
 
function TVok.CompVok(VString: ShortString; var IX: Smallint): Boolean;
var
  i: Smallint;
  Ahigh: Smallint;
begin
  try
    (*BEGIN*) 
    Ahigh := high(Voktype.Vokabel[Voktype.VokAkt]); // Ermittle die größe des Arrays
    IX := -1;
    for i:=0 to Ahigh do begin
      if VString = Voktype.Vokabel[Voktype.VokAkt,i] then begin // Vergleiche den String mit dem Array
        IX := i; // Ergebniss wird ausgeliefert
        Break;
      end;
    end;
    (*END*) 
    Result := True;
  except
    Result := False;
  end;
end;
 
 
end.
Felix K.
  Mit Zitat antworten Zitat