![]() |
BrainyTrainy - Vokabeltrainer
Hi,
Der BrainyTrainy ist ein leistungsstarker Vokabeltrainer mit vielen Funktionen. Funktionen:
Alle Funktionen: ![]() Name: BrainyTrainy - Vokabeltrainer Last Release: 04.12.2004 Getesetet unter: WinXP, Win2000 ![]() -------- 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 |
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:
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 |
Re: BrainyTrainy - Vokabeltrainer
Hi,
danke, werde das soweit mal abarbeiten. Das mit den 13MB Speicher wundert mich, ich schau da mal nach! Danke |
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! |
Re: BrainyTrainy - Vokabeltrainer
Zitat:
Dust Signs |
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 |
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 |
Re: BrainyTrainy - Vokabeltrainer
Zu 9:
Es gibt den ![]() ![]() |
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? |
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:
Und
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; ![]() 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 ;)). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz