Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi "Lerneffekt" beim Vokabeltrainer... (https://www.delphipraxis.net/89065-lerneffekt-beim-vokabeltrainer.html)

grenzgaenger 25. Mär 2007 16:04

Re: "Lerneffekt" beim Vokabeltrainer...
 
also, so kommst du nicht weiter. du musst deine datenhaltung umstellen, wie oben gesagt und damit funktioniert dein access in deiner string list nicht mehr. für die neue datenhaltung hast du folgende möglichkeiten:
  • .ini file
  • .xml file
  • datenbank
  • typisierte datei mit records
  • untypisierte datei mit zusätzlichen trennzeichen
du musst einfach 1, 2 daten mitgeben, damit du speichern kannst, ob etwas richtig oder nicht richtig beantwortet wurde, wie sonnst könntest du (ohne information) bestimmen, ob etwas angezeigt werden soll oder nicht? du kennst doch das alte EDV sprichwort: "Und weiss ich nicht mehr weiter, dann setz ich mir 'nen Schalter". und genau, das musst du jetzt hier tun.

wünsch dir noch viel glück und erfolg.

Sandra121289 25. Mär 2007 16:13

Re: "Lerneffekt" beim Vokabeltrainer...
 
okay, dann stell ich das halt um...wenn ich nun für jede vokabel gespeichert hab, wie oft diese falsch beantwortet wurde, wie kann ich dann die wahrscheinlichkeit der abfrage erhöhen?^^

grenzgaenger 25. Mär 2007 16:22

Re: "Lerneffekt" beim Vokabeltrainer...
 
Liste der Anhänge anzeigen (Anzahl: 3)
nach der lernpsychologie soll man die nicht gewussten punkte täglich wiederholen, die gewussten dann in jeweils einem grösserem zeitabstand, bis sie sitzen. daher benötigst du felder für
  • (1) wann das letzte mal richtig beantwortet
  • (2) wie oft richtig beantwortet
zu eins: du selektierst dir nur die vokabeln, welche nicht richtig beantwortet wurden. damit hast du automatisch diejenigen öfters, welche du nicht gewusst hast. wenn du dann die abfrage machst, speicherst du mit ab, ob die vokabel richtig beantwortet wurde (counter erhöhen) und das entsprechende datum. wenn sie falsch beantwortet wurde, setzt du den counter wieder auf 0

zu zwei: je nach den level (counter) addierst du die entsprechenden tage hinzu (zum datum der letzten abfrage). ist dieses errechnete datum <= syst-datum, dann kommen die vokabeln wieder dran.

das heisst, du brauchst zwei zusätzliche felder bei deinen vokabeln (a) datum und (b) counter. counter ist normal ein integer, das datum sollte in einer definierten form gespeichert werden, damit es auch auf einem anderen rechner funktioniert.

wünsch dir noch viel spass und hoffe, es hilft ein wenig.

fLaSh11 25. Mär 2007 16:24

Re: "Lerneffekt" beim Vokabeltrainer...
 
Ich hätte ne andere Lösung:

Nehmen wir an, du hast 2 Kategorien.
1=oft richtig
2=oft falsch
(oder so ähnlich)

Dann (unter Berücksichtigung, wieviele Vokabeln in den Kategorien jeweils sind!) sagst du z.B. dass Kategorie 2 zweimal mehr als 1 abgefragt wird.
Du machst also
Delphi-Quellcode:
x:=random(100);
if x<33 then //Kategorie 1
if x>=33 then //Kategorie 2
und wenn du festgestellt hast, welche Kategorie du abfragst, ratest du noch die Vokabeln in der Kategorie.

Aber Achtung: Nicht dass in Kategorie 2 nur eine Vokabel hockt und die 6 von 10 mal abgefragt wird O.o

bitsetter 25. Mär 2007 19:16

Re: "Lerneffekt" beim Vokabeltrainer...
 
Hallo,

du könntest eine Art von Problemliste erstellen, in der die Position der "Problemfälle" in deiner Vokabelliste bzw deiner ListBox steht.

Delphi-Quellcode:
...
  private
    ProblemListe: TList;
    ProblemPos: ^Integer;
  public
...

procedure TForm2.FormCreate(Sender: TObject);
begin
  ProblemListe:= TList.Create;
  randomize;
end;

procedure TForm2.FormDestroy(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to Pred(ProblemListe.Count) do
  begin
    ProblemPos := ProblemListe.Items[i];
    Dispose(ProblemPos);
  end;
  ProblemListe.Free;
end;

procedure TForm2.eingabeKeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then
  begin
    if eingabe.text=loesung then
      bewertung.caption:='richtig'
    else
    begin
      bewertung.caption:='falsch';
      New(ProblemPos);
      ProblemPos^ := 2;//Beispiel (Position in der ListBox)
      ProblemListe.Add(ProblemPos);//Problem Position hinzufügen
    end;
    naufgabe.setfocus;
  end;
end;

procedure TForm2.naufgabeClick(Sender: TObject);
var i,art:integer;
begin
  listbox1.Items.LoadFromFile('vokabel.txt');

  if ProblemListe.Count> 0 then
  begin
    i:= Random(ProblemListe.Count);
    //panel1.Caption:=listbox1.Items.Strings[PInteger(ProblemListe.Items[i])^];
    panel1.Caption:=listbox1.Items.names[PInteger(ProblemListe.Items[i])^];
    loesung:=listbox1.Items.ValueFromIndex[PInteger(ProblemListe.Items[i])^];
  end;
...
end;

Sandra121289 26. Mär 2007 15:18

Re: "Lerneffekt" beim Vokabeltrainer...
 
so bei mir hat sich jetzt ne ganze menge im quelltext verändert, aber bekomme ein paar fehlermeldungen :( helft ihr mir bitte sie auszumerzen? das was neu dazugekommen ist hab ich zur besseren übersicht als kommentar gekennzeichnet!

Bekomme bei der delete-funktion die Fehlermeldung "not enough actual parameters", und bei den beiden if-and-then-Anweisungen "incompatible types". keine ahnung woran es liegen kann!!
Delphi-Quellcode:
procedure TForm2.naufgabeClick(Sender: TObject);
var art:integer;
begin
listbox1.Items.LoadFromFile('vokabel.txt');
case radiogroup1.itemindex of
  0: art:=1;
  1: art:=2;
  2: art:=random(2)+1;
  else showmessage('Bitte erst die Art der Vokabelabfrage bestimmen!');
end;

//if listbox2.items.count>3 then
//begin
//  x:=random(100);
//  if x<33 then i:=random(listbox1.Items.Count);
//  if x>=33 then i:=random(listbox2.items.count);
//end
//else i:=random(listbox1.Items.Count);

case art of
1:begin
    panel1.Caption:=listbox1.Items.names[i];
    loesung:=listbox1.Items.ValueFromIndex[i];
  end;

2:begin
    panel1.Caption:=listbox1.Items.ValueFromIndex[i];
    loesung:=listbox1.Items.names[i];
  end;
end;
 eingabe.text:='';
 bewertung.caption:='';
 eingabe.setfocus;
end;


procedure TForm2.eingabeKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
  begin
    if eingabe.text=loesung then bewertung.caption:='richtig'
                             else bewertung.caption:='falsch';
    naufgabe.setfocus;
    if eingabe.text=loesung then bewertung.font.color:= clgreen
                        else bewertung.font.Color:=clred;
    if eingabe.text=loesung then richtig:=richtig+1
                        else falsch:=falsch+1;
                        gesamt:=gesamt+1;
auswertung.caption:='Gesamt:'+inttostr(gesamt)+'richtig:'+inttostr(richtig)+'falsch:'+inttostr(falsch);
   end;
//if eingabe.text<>loesung and pos(listbox1.Items[i], listbox2.Items)><-1 then //listbox2.items.add(listbox1.Items[i]);
//if i=random(listbox2.items.count) and eingabe.text=loesung then
//listbox2.items.Delete[i];
//end;

procedure TForm2.FormCreate(Sender: TObject);
begin
randomize;
end;


end.

kalmi01 26. Mär 2007 15:25

Re: "Lerneffekt" beim Vokabeltrainer...
 
probiers mal so:
Delphi-Quellcode:
if (eingabe.text<>loesung) and (pos(listbox1.Items[i], listbox2.Items)>0)
then listbox2.items.add(listbox1.Items[i]);
if (i=random(listbox2.items.count)) and (eingabe.text=loesung)
then listbox2.items[i].Delete;

Sandra121289 26. Mär 2007 15:31

Re: "Lerneffekt" beim Vokabeltrainer...
 
geht auch nicht...wieder inkompatible typen und das item[i].delete funzt so nicht.."record,object und class type required" :?
trotzdem danke für den versuch kalmi01

Klaus01 26. Mär 2007 15:38

Re: "Lerneffekt" beim Vokabeltrainer...
 
Delphi-Quellcode:
pos(listbox1.Items[i], listbox2.Items)><-1
sollte es nicht so heißen:

Delphi-Quellcode:
pos(listbox1.Items[i], listbox2.Items) <> -1
Grüße
Klaus

Sandra121289 26. Mär 2007 15:40

Re: "Lerneffekt" beim Vokabeltrainer...
 
stimmt klaus01...aber die fehlermeldungen bleiben :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:51 Uhr.
Seite 2 von 3     12 3      

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