Einzelnen Beitrag anzeigen

blender

Registriert seit: 25. Feb 2008
95 Beiträge
 
Delphi 7 Personal
 
#70

Re: Vokabeltrainer

  Alt 20. Mai 2008, 17:15
Hallo,
ich habe die Abfrage neu Programmiert, komme aber nun nicht mehr mit Haltepunkten weiter:

Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);
var auswahl, gessum: integer;
    sprach1, sprach2, eingabe: string;
    richtanz: Boolean;
label 1;
begin

ZaeleNochAbzuFr(nochabzufr, gessum);
RandomVokabel(nochabzufr, auswahl);

if gessum > 0 then
 begin
 ChangeVokabel(auswahl, radiogroup1.ItemIndex, sprache1, sprache2, sprach1,sprach2);
 1:
 begin
 FrageAb(Vokabel1, Sprach1, Sprach2, Eingabe);

 VergleicheVokabel(eingabe, vokabel2, checkbox1.checked, fehler, richtanz);
 if (not richtanz) and (eingabe <> '') then goto 1;
 if eingabe <> 'then
  begin
  ShowMessage(sprach1 + ' - '+ sprach2 +#10#13+ vokabel1 + ' - '+vokabel2+#10#13+'Es werden noch '+inttostr(gessum)+' Vokabeln abgefragt.'+#10#13+'Du hast '+inttostr(fehler) {Hier zeigt sich der Fehler.} +' falsche Buchstaben eingegeben.');
  end;
 end;
end;
end;
Delphi-Quellcode:
procedure TForm1.VergleicheVokabel (Vokabel1, Vokabel2: String; FilterLeerZeichen: Boolean; var Fehler: Integer; var KonnteVergleichen: Boolean);
var i, j, gesamtfehler: Integer;
    Moeglichkeiten, Moeglichkeiten1, fehlerpromoegl: TStringList;
begin
gesamtfehler:=0;
Moeglichkeiten := TStringlist.Create;
Moeglichkeiten1 := TStringlist.Create;
fehlerpromoegl := TStringlist.Create;
GetMoeglichkeiten(Eingabe, filterleerzeichen, Moeglichkeiten);
GetMoeglichkeiten(Vokabel2, filterleerzeichen, Moeglichkeiten1);
KonnteVergleichen := Moeglichkeiten.Count=Moeglichkeiten1.Count;
if KonnteVergleichen then
 begin
 //Vergleiche
 for i := 0 to Moeglichkeiten.Count-1 do
  begin
  for j := 0 to moeglichkeiten1.count-1 do
   begin
   fehler:=0;
   VergleicheMoeglichkeit(Moeglichkeiten1[i], moeglichkeiten[j], Fehler);
   FehlerProMoegl.Add(inttostr(fehler));
   end;
  end;
 end;
 for i := 0 to moeglichkeiten.count-1 do
  begin
  fehler := StrToInt(FehlerProMoegl[i*moeglichkeiten.count]);
  for j := 0 to moeglichkeiten1.count-1 do
   begin
   if StrToInt(FehlerProMoegl[i*moeglichkeiten.count+j]) < fehler then fehler := StrToInt(FehlerProMoegl[i*moeglichkeiten.count+j]);
   end;
  inc(GesamtFehler, Fehler);
  end;
 fehler := gesamtfehler;
end;
Delphi-Quellcode:
procedure TForm1.GetMoeglichkeiten (Vokabel: String; LeerzFiltern: Boolean; Var Moeglichkeiten: TStringlist);
var i: Integer;
    Moeglichkeit, Filter: String;
begin
Filter:='';
if leerzfiltern then
begin
 for i := 1 to Length(Vokabel) do
 begin
 if vokabel[i] <> ' then Filter:=filter+vokabel[i];
 end;
Vokabel := filter;
end;

for i := 1 to Length(Vokabel) do
 begin
 if (Vokabel[i]<>',') and (vokabel[i] <> ';') then Moeglichkeit := Moeglichkeit + Vokabel[i]
 else
  begin
  Moeglichkeiten.Add(Moeglichkeit);
  Moeglichkeit:='';
  end;
 end;
 Moeglichkeiten.Add(Moeglichkeit);
 Moeglichkeit:='';
end;
Delphi-Quellcode:
procedure TForm1.VergleicheMoeglichkeit (Moegl1, Moegl2: String; var Fehler: integer);
var i, ausgleich: Integer;
begin
ausgleich := 0;
Fehler := 0;

for i := 1 to length(moegl1) do
 begin
 if i+ausgleich > length(moegl2) then inc(fehler) else
 begin
 if UpperCase(moegl1[i]) <> UpperCase(moegl2[i + ausgleich]) then
  begin
  inc(Fehler);
  if uppercase(moegl1[i]) = uppercase(moegl2[i + ausgleich - 1]) then
   begin
   dec(ausgleich);
   dec(fehler);
   end
   else
   if uppercase(moegl1[i]) = uppercase(moegl2[i + ausgleich + 1]) then
    begin
    inc(ausgleich)
    end;
  end;
 end;
 end;
end;
Delphi-Quellcode:
procedure TForm1.ChangeVokabel(auswahl, WasZuWas: integer; sprache1, sprache2: string; var sprach1, sprach2: string);
begin
 case WasZuWas of
0: begin
vokabel1 := vokabelnf1[auswahl]; sprach1 := sprache1;
vokabel2 := vokabelnf2[auswahl]; sprach2 := sprache2;
   end;
1: begin
vokabel2 := vokabelnf1[auswahl]; sprach2 := sprache1;
vokabel1 := vokabelnf2[auswahl]; sprach1 := sprache2;
   end;
2: begin
case random(2) of
0: begin
vokabel1 := vokabelnf1[auswahl]; sprach1 := sprache1;
vokabel2 := vokabelnf2[auswahl]; sprach2 := sprache2;
   end;
1: begin
vokabel2 := vokabelnf1[auswahl]; sprach2 := sprache1;
vokabel1 := vokabelnf2[auswahl]; sprach1 := sprache2;
   end;
  end;
end;
end;
end;
Delphi-Quellcode:
procedure TForm1.ZaeleNochAbzuFr (Werte: TStringlist; var Insgesamt: Integer);
var gessum, i: integer;
begin
gessum:=0;
for i := 0 to werte.count-1 do gessum := gessum + strtoint(nochabzufr[i]);
insgesamt:=gessum;
end;
Delphi-Quellcode:
procedure TForm1.FrageAb (Vokabel1, Sprache1, Sprache2: String; var eingabe: string);
begin
 eingabe := InputBox('Abfrage... '+sprache1+' - '+sprache2,'Bitte übersetze folgende Vokabel aus dem '+sprache1+'en ins '+sprache2+'e: '+vokabel1,'');
end;
Delphi-Quellcode:
procedure TForm1.RandomVokabel (nochabzufr: TStringList; var auswahl: integer);
var gessum: integer;
begin
randomize;
zaelenochabzufr(nochabzufr, gessum);
auswahl := random(vokabelnf1.count-1);
while (gessum > 0) and (strtoint(nochabzufr[auswahl]) <=0) do auswahl := random(vokabelnf1.count-1);
end;
Ich glaube, dass die Eingabe nicht richtig übergeben wird.
Beim Kompilieren werden keine Fehler, Warnungen oder Hinweise angezeigt.
  Mit Zitat antworten Zitat