Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   BrainyTrainy - Vokabeltrainer (https://www.delphipraxis.net/40621-brainytrainy-vokabeltrainer.html)

Timelesk 18. Feb 2005 10:44


BrainyTrainy - Vokabeltrainer
 
Hi,

Der BrainyTrainy ist ein leistungsstarker Vokabeltrainer mit vielen Funktionen.

Funktionen:
  • übersichtlich - Alle wichtigen Funktionen sind schnell und bequem erreichbar
  • leistungsstark - viele Funktionen bilden eine optimale Ausstattung zum schnellen und sicherem Vokabellernen!
  • Volltext-Vokabelsuche innerhalb einer Lektion - Rechtsklick auf dem Suchenfeld öffnet ein Kontextmenü zur Einstellung der Suchenoption
  • Beachtung der Groß- und Kleinschreibung bei der Abfrage an- und abschaltbar
  • Vokabelabfrage mit Fips, dem Hund
  • Protokollierung aller Lernerfolge
  • Import und Export von Vokabeln
und und und!

Alle Funktionen: http://www.lukas-schulze.de/index.php?show=brainytrainy

Name: BrainyTrainy - Vokabeltrainer
Last Release: 04.12.2004
Getesetet unter: WinXP, Win2000

Download

--------

Geplant ist noch eine Erleichterung beim erstellen der Lektionen:
Man soll Vokabeln aus den bestehenden Lektionen in eine neue Lektion kopieren können.
Aber das ist noch im Aufbau.

Kritik, Fehlermeldungen und Lob wären echt klasse!
Habt ihr andere Betriebssysteme: Läuft der Vokabeltrainer bei euch?

Danke

Dust Signs 18. Feb 2005 11:35

Re: BrainyTrainy - Vokabeltrainer
 
Hab mir das Prog. mal angeschaut. Folgendes:

1.) Das Foto in der Aboutbox ist zwar sehr nett, vergrößert aber zum Einen das Programm unnötig und eignet sich doch nur sehr wenig, wenn du das Programm hier einer - doch recht breiten - Öffentlichkeit vorstellst. Raus damit

2.) Warum kann man das Einstellungsfenster nicht über das X schließen?

3.) Mich würde mal interessieren, was dein Programm macht, bevor das Importfenster aufgerufen wird. Die Festplatte arbeitet sich zu Tode und das Programm wird schön weiß und hängt. Nach 20 sec. kommt dann der Importdialog

4.) Wenn ich den Importdialog einfach schließe ist das Hauptfenster nicht mehr bedienbar. Jetzt muss ich das Programm über den Taskmanager beenden. Naja, nochmal starten *grml*

5.) Wieso braucht dein Vokabeltrainer - wenn ich ihn nur starte und noch nie etwas damit gemacht habe - 13 (!) MB Speicher?

6.) Wenn ich eine neue Sprache erstelle und dann an eine leere Stelle in der Liste klicke wird der "Löschen" bzw. der "Bearbeiten"-Button nicht disabled - ich erhalte nur eine Meldung, dass keine Sprache ausgewählt wurde. Disablen!

7.) Warum ausgerechnet 20, 30 und 40 Vokabeln? Besser wäre ein Button und dazu entweder eine Einstellung oder ein Spinedit unter dem Button

8.)
Zitat:

Richtig
~~~~~~~~~~~~~~~~~~~~~~
solltest du vielleicht etwas anders formatieren. Sieht sehr unprofessionell aus

9.) Dein Programm ignoriert Tippfehler. Wäre bei einem Vokabelprogramm aber durchaus wünschenswert, dass es so kulant ist, dass man sich einmal vertippen darf.

10.) Lass den Hund lieber wirklich bellen. *wuffwuff* sieht aus wie ein Zitat aus dem Chat-Log eines 14-Jährigen

11.) Wirklich zufällig geordnet sind die Vokabeln ja nicht gerade

12.) Dein Programm kennt einen Unterschied zwischen "Tree" und "tree" - in diesem Fall nicht sehr angebracht (meiner Meinung nach). Du solltest zumindest den ersten Buchstaben nicht case-sensitive machen

13.) Sobald ich ein Vokabel mehr als dreimal richtig habe, ist ein grüner Smilie daneben zu sehen. Das trifft absolut nicht zu, da ich mir bei jedem Vokabel mindestens einmal hab helfen lassen...

14.) Das ständige "Weiter" nervt mit der Zeit. Vielleicht wäre es besser, wenn das Programm gleich zum nächsten Vokabel springt.

15.) "Wollen Sie wirklich exportieren?" - Hätte ich sonst auf den Button geklickt?

16.) Dein Programm exportiert nicht in den Ordner, den ich angebe

17.) Was bewirkt die Rücksetzfunktion? Die Smilies sind alle nach wie vor grün

Das war's soweit. Was ich mich noch immer frage: welchen Zweck hat die Statusbar?

Dust Signs

Timelesk 18. Feb 2005 11:56

Re: BrainyTrainy - Vokabeltrainer
 
Hi,

danke, werde das soweit mal abarbeiten.
Das mit den 13MB Speicher wundert mich, ich schau da mal nach!

Danke

Timelesk 18. Feb 2005 13:22

Re: BrainyTrainy - Vokabeltrainer
 
1.) Hab ich rausgenommen, hattest recht!

2.) Da gab es früher Probleme mit dem Speichern der Einstellungen. Mittlerweile ist das aber schon lange raus, war ein Überbleibsel. Ist entfernt

3.) Ich benutze die Komponente TShellTreeView für die Ordneranzeige und lasse den Programmpfad als Startpfad anzeigen und dabei scannt der leider irgendwie die Festplatte und Laufwerke (Diskettenlaufwerk etc.)

4.) Oha! Vielen Dank! Ist gefixt

5.) Ohjeee, keine Ahnung! Ähm, kann mir jemand sagen, wie man da am besten Vorgeht um das rauszufinden?

6.) Ist gefixt

7.) Hmmm, keine schlechte Idee: freie Wahl zwischen 20 und Höher, sollten weniger Vokabeln existieren als 20, ist die Zahl fest! Cool, DANKE!

8.) Hmm, ist ein Memo-Feld. Wie will man des anders formatieren? Klar, ~ entfernen und dann?

9.) Ja, leider ist mir noch nichts dazu eingefallen, wie man das überhaupt realisieren könnte. Przentualer Vergleich? Kommt blöd! Vor allem bei kurzen und laaaangen Wörtern

10.) Ich wollte keine extra-Dateien für den Vokabeltrainer und der Sound bei anderen Vokabeltrainern hat mich schon immer genervt!

11.) randomize und random! Gibt's was besseres?

12.) Dazu kann man über Einstellungen die Groß- und Kleinschreibung an-/abschalten

13.) Wurde gefixt! Ist nun Rot!

14.) Enter drücken bewirkt manchmal Wunder. Ich sollte irgendwo mal die ganzen TurboShortcuts etc. aufschreiben. Enter funktioniert auch bei der Vokabeleingabe und Spracherstellung etc.

15.) Entfernt, sowohl Import als auch Export

16.) Gefixt

17.) Sobald eine Vokabel abgeschlossen ist, ist sie mit einem Haken gekennzeichnet. Den grünen Smilie behält eine Vokabel 3 Abfragen lang bis der Haken frühestens kommt. Muss mal schaun, bestimmt erstell ich noch ein paar Smilies und füge die dann ein, damit man da besser zurecht kommt!

Dust Signs 18. Feb 2005 13:41

Re: BrainyTrainy - Vokabeltrainer
 
Zitat:

Zitat von Timelesk
8.) Hmm, ist ein Memo-Feld. Wie will man des anders formatieren? Klar, ~ entfernen und dann?

Wie wärs mit einer Schriftart, bei der alle Buchstaben gleich groß, d.h. proportional sind? Ich denke da an Courier z.B. - da könntest du dann (vielleicht besser) mit ======== unterstreichen (oder einfach im Memo den FontStyle auf Underline setzen)

Dust Signs

Timelesk 18. Feb 2005 14:40

Re: BrainyTrainy - Vokabeltrainer
 
Danke, werd ich mal probieren...

Was kann man denn zu 5.) machen? bei mir zeigt er 8MB an.
Wie kann man da denn die Fehlerquelle(n) ermitteln?

Danke


PS:
Ich habe die jetzige Version wieder geupdatet:
- About-Dialog nun bearbeitet
- Vokabelabfrage - Anzahl der Vokabeln einstellbar

Dust Signs 18. Feb 2005 14:42

Re: BrainyTrainy - Vokabeltrainer
 
Ich hab keine Zeile Code. Ich kann dir nur generelle Tipps geben:

- Prüfen, ob du irgendwo Speicher reservierst und nicht mehr freigibst
- Statische Arrays meiden, dynamische verwenden
- So wenig Bilder wie möglich ;)

Ansonsten: wie speicherst du, welche Fremdkomponenten verwendest du und wie werden die Vokabeln gespeichert (DB, File of...)

Dust Signs

leddl 18. Feb 2005 16:17

Re: BrainyTrainy - Vokabeltrainer
 
Zu 9:
Es gibt den Bei Google suchenLevenstein-Algorithmus (Den hab ich hier irgendwo rumfahren, muß ich mal suchen) und dann noch den Bei Google suchenSoundEx-Algorithmus, wobei zweiterer - anscheinend - mehr auf englische Begriffe ausgerichtet ist.

Timelesk 18. Feb 2005 19:54

Re: BrainyTrainy - Vokabeltrainer
 
Hi,

ich benutze nirgendwo statische Arrays. Sind immer nur dynamische!
Muss man diese wieder freigeben? Wenn nicht, dann passt das soweit!

Speicher wird nirgendwo reserviert außer beim INI-File abrufen und abspeichern. aber dort wird per ini.free wieder alles freigegeben.

Gespeichert werden die Vokabeln per Abspeichern aller Listboxeinträge über Listbox2.Items.SaveToFile();

Leider hab ich des mit der Datenbank bis jetzt nie auf die Reihe bekommen (mir würde schon ne Text-Datenbank reichen, aber irgendwie find ich da kein gutes Tut).

Besondere Komponenten: Gridview von BergSoftware für die Anzeige der Vokabeln und die Statusbar in der Vokabelabfrage.
Ansonsten glaub noch 1,2 Kompos aus der Jedi-Sammlung.

@leddl: Danke für die Links, ich schau mich mal um.


=================================================

Was kann man denn anstelle der TShellTreeView-Komponente zur Ordneranzeige nehmen?
Oder reicht es, wenn er nur das Root-Verzeichnis vom Programm durchsucht?

leddl 18. Feb 2005 20:22

Re: BrainyTrainy - Vokabeltrainer
 
So, hab ein bißchen gesucht und bin fündig geworden. Der Code ist allerdings nicht von mir, den hab ich mir selber vor ner halben Ewigkeit mal irgendwo abgeholt. Der war Teil einer Funktion, um in einer TStrings-Liste das Element zu finden, das einem vorgegebenen String am ähnlichsten war. Daher hoffe ich mal, daß die Funktion so für sich alleine auch funtkioniert. Falls nich, meld dich einfach nochmal.
So, wie funktioniert das ganze? Du übergibst der Funktion deine 2 Strings und bekommst dann einen Integer zurück, der - wie der Name der Funktion schon sagt - die Distanz der beiden Strings ausdrückt. Bei 0 stimmen sie überein, ansonsten sind sie halt dementsprechend verschieden. Kannst ja ein bißchen rumexperimentieren, welche Werte für kleinere Tippfehler rauskommen und was gerade noch akzeptabel ist.
Delphi-Quellcode:
function LevenshteinDistance(const sString,sPattern: String): Integer;
  const
    MAX_SIZE = 50;
  var
    aiDistance: array [0..MAX_SIZE,0..MAX_SIZE] of Integer;
    i,j,
    iP,iQ,iR,iPP,
    iStringLength,
    iPatternLength,
    iMaxI,iMaxJ   : Integer;
    chChar        : Char;

    function Min(X,Y,Z: Integer): Integer;
    begin
      if (X<Y) then
        Result:=X
      else
        Result:=Y;
      if (Result>Z) then
        Result:=Z;
    end; {  Min }

  begin
    iStringLength:=length(sString);
    if (iStringLength>MAX_SIZE) then
      iMaxI:=MAX_SIZE
    else
      iMaxI:=iStringLength;
    iPatternLength:=length(sPattern);
    if (iPatternLength>MAX_SIZE) then
      iMaxJ:=MAX_SIZE
    else
      iMaxJ:=iPatternLength;

    aiDistance[0, 0]:=0;
    for i:=1 to iMaxI do
      aiDistance[i, 0]:=aiDistance[i-1, 0]+FiR0;
    for j:=1 to iMaxJ do begin
      chChar:=sPattern[j];
      if ((chChar='*') or (chChar='?')) then
        iP:=0
      else
        iP:=FiP0;
      if (chChar='*') then
        iQ:=0
      else
        iQ:=FiQ0;
      if (chChar='*') then
        iR:=0
      else
        iR:=FiR0;

      aiDistance[0, j]:=aiDistance[0, j-1]+iQ;

      for i:=1 to iMaxI do begin
        if (sString[i]=sPattern[j]) then
          iPP:=0
        else
          iPP:=iP;
        {*** aiDistance[i,j] := Minimum of 3 values ***}
        aiDistance[i,j]:=Min(aiDistance[i-1, j-1]+iPP,
                             aiDistance[i, j-1] +iQ,
                             aiDistance[i-1, j] +iR);
      end;
    end;
    Result:=aiDistance[iMaxI, iMaxJ];
  end;
Und hier haste den SoundEx mal in VB. Vielleicht wird daran die Funktionsweise klar.
Hab jetzt leider auf die schnelle bei Google nix in Delphi Language gefunden (Aber ich muß gestehen, ich hab auch grad keine große Lust gehabt und deswegen nich besonders intensiv gesucht ;)).

Timelesk 26. Feb 2005 14:19

Re: BrainyTrainy - Vokabeltrainer
 
Hi,

vielen Dank.

Ich werd mal schauen, wie ich das einbaue.
Werd auch nochmal bei Google schauen.

Merci beaucoup

Timelesk 22. Mär 2005 21:29

Re: BrainyTrainy - Vokabeltrainer
 
Hallo,

habe jetzt einiges an meinem Vokabeltrainer geändert!
Unter anderem bin ich von den Listboxen auf schnelle Stringlists umgestiegen und habe weitere Funktionen wie "Vokabeln kopieren" oder "Vokabeln drucken" eingefügt!

Auch wurde der Import/Export überarbeitet und die speicherintensive ShellTreeView-Komponente herausgenommen!
Zudem ist der BrainyTrainy absofort als Setup-Datei verfügbar!

Die Tip-Funktion habe ich bis jetzt noch nicht umgeändert, da ich erstmal alles andere in's Reine bringen wollte und die oben genannten Erweiterungen schon sehr lange auf meiner ToDo-Liste standen!
Aber ich hab mich schon damit beschäftigt!!

Ich würde euch einfach nochmal bitten das Programm zu testen und mir evtl. Bugs mitzuteilen!
Wäre echt cool von euch :)


Vielen Dank

Download

Timelesk 23. Mär 2005 22:53

Re: BrainyTrainy - Vokabeltrainer
 
Moin,

hab jetzt auch mal den Algorithmus für die Tipp-Funktion eingebaut, sowie die Tippfunktion etc. überarbeitet.
Die Installerversion ist wieder abgesetzt! Ganz normale EXE-Datei wieder!
Ich brauch für den BT keinen Installer, nur unnötige KBs und eine einzelne Datei installieren? Nicht nötig!


History: http://www.lukas-schulze.de/index.ph...trainy_history
Direktdownload: http://www.lukas-schulze.de/download.php?id=1

Über Statemenst, Bug-Reports, Ergänzungen/Vorschläge etc. freue ich mich immer wieder :)

Vielen Dank

Speedmaster 23. Mär 2005 23:12

Re: BrainyTrainy - Vokabeltrainer
 
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.

mr.johnnyb 29. Apr 2006 23:14

Re: BrainyTrainy - Vokabeltrainer
 
Na da haste aber ein ganz kleines bischen bei andersensoft.com abgekupfert.

Was????

Grüße
johnny

xZise 30. Apr 2006 09:46

Re: BrainyTrainy - Vokabeltrainer
 
Liste der Anhänge anzeigen (Anzahl: 2)
Also bei mir bekomme ich nur einen Fehler!

barnti 14. Sep 2006 10:17

Re: BrainyTrainy - Vokabeltrainer
 
Hi,

mir gefällt Dein Programm schon sehr gut. Ich hätte da noch einen Vorschlag:

Ich würde mir für ein solches Programm wünschen, ich könnte auch verben konjugieren (oder deklinieren). Was ich meine wäre so etwas wie:
Code:
Deutsch:            Portugiesisch:
reden               falar

ich rede            eu falo
du redest           vc fala
er, sie, es redet   fala
wir reden           falamos
ihr redet           falam
sie reden           falam
Das ganze noch für verschiedene Zeiten (Presens, perfekt, ...) wäre ganz großartig!

Viel Spaß noch! Würde mich freuen etwas neues zu hören!

freak4fun 9. Jan 2007 09:13

Re: BrainyTrainy - Vokabeltrainer
 
Hallo,
wo steht denn wie ich alles wieder lösche? Ich hab die *.zip runter geladen und direkt daraus ausgeführt. Wie lösche ich jetzt die _alle_ Vokabeln? :gruebel:

MfG
freak


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz