Registriert seit: 25. Feb 2008
95 Beiträge
Delphi 7 Personal
|
Re: Vokabeltrainer
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.
|