|
![]() |
|
Registriert seit: 17. Mär 2008 298 Beiträge Delphi 7 Personal |
#1
da das vermutlich auch nciht weiter hilft, hier die ganze Unit:
Delphi-Quellcode:
um wenigstens etwas helfen zu können: Es geht um einen Vokabeltrainer, Das ganze ist dafür da um die "Abzufragenden" Vokabeln zusammen zu stellen.
unit MainCalcPart;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; procedure VokCalc; implementation uses Frame; procedure VokCalc; var StrList: TStringList; iI, kI, lI, jI: Integer; begin StrList:= TStringList.Create; Frame_1.SVoksToDo.Clear; StrList.Clear; randomize; //3 Neue Vokabeln begin for iI := 1 to 3 do begin If (Frame_1.LastVokIndex+1) <= Frame_1.OverAllVok then begin inc(Frame_1.LastVokIndex); Frame_1.SVoksToDo.Add(Frame_1.savestring[Frame_1.savestring.IndexOf('NR' + inttostr(Frame_1.LastVokIndex))+7]); end; end; end; //5 aus Aktueller Lektion begin for iI := 1 to Frame_1.OverAllVok do begin If (strtoint(Frame_1.savestring[(Frame_1.savestring.IndexOf('NR'+ inttostr(iI)) + 5)]) = Frame_1.acuteLekt) then begin If Frame_1.SVoksToDo.IndexOf(Frame_1.savestring[Frame_1.savestring.indexOf('NR' + inttostr(iI))+7]) = (-1) then begin if StrList.IndexOf(Frame_1.savestring[Frame_1.savestring.indexOf('NR' + inttostr(iI))+7]) = (-1) then begin StrList.Add(Frame_1.savestring[Frame_1.savestring.indexOf('NR' + inttostr(iI))+7]); end; end; end; end; begin if StrList.Count >= 5 then begin Frame_1.SVoksToDo.Add(StrList[random((StrList.Count-1) div 5)]); Frame_1.SVoksToDo.Add(StrList[random((StrList.Count-1) div 5)+ (1*((StrList.Count) div 5))]); Frame_1.SVoksToDo.Add(StrList[random((StrList.Count-1) div 5)+ (2*((StrList.Count) div 5))]); Frame_1.SVoksToDo.Add(StrList[random((StrList.Count-1) div 5)+ (3*((StrList.Count) div 5))]); Frame_1.SVoksToDo.Add(StrList[random(((StrList.Count-1) div 5) + ((StrList.Count) mod 5)) + (4*((StrList.Count) div 5))]); StrList.Clear; end; end; end; //2 Problemfälle aus akt. Lektion begin for Ii := 1 to Frame_1.OverallVok do begin If (strtoint(Frame_1.savestring[(Frame_1.savestring.IndexOf('NR'+ inttostr(iI)) + 5)]) = Frame_1.acuteLekt) then begin If Frame_1.SVoksToDo.IndexOf(Frame_1.savestring[Frame_1.savestring.indexOf('NR' + inttostr(iI))+7]) = (-1) then begin if Frame_1.savestring[Frame_1.savestring.IndexOf('Nr' + inttostr(iI)) + 1] = '1' then begin if StrList.IndexOf(Frame_1.savestring[Frame_1.savestring.indexOf('NR' + inttostr(iI))+7]) = (-1) then begin if ((strtofloat(Frame_1.savestring[Frame_1.savestring.IndexOf('NR' + inttostr(iI)) + 2])) / (strtofloat(Frame_1.savestring[Frame_1.savestring.IndexOf('NR' + inttostr(iI)) + 3]))) < Frame_1.FailRatio then begin StrList.Add(Frame_1.savestring[Frame_1.savestring.indexOf('NR' + inttostr(iI))+7]); end; end; end; end; end; end; begin if StrList.Count >= 2 then begin iI:=random(StrList.Count); Frame_1.SVoksToDo.Add(StrList[iI]); repeat kI:=random(StrList.Count); Frame_1.SVoksToDo.Add('es geht'); until kI <> iI; Frame_1.SVoksToDo.Add(StrList[kI]); end; end; StrList.Clear; end; //3 Problemfälle aus letzten beiden Lektionen begin for iI := 1 to Frame_1.OverAllVok do begin If ((strtoint(Frame_1.savestring[(Frame_1.savestring.IndexOf('NR'+ inttostr(iI)) + 5)])) >= Frame_1.acuteLekt -2) and ((strtoint(Frame_1.savestring[(Frame_1.savestring.IndexOf('NR'+ inttostr(iI)) + 5)])) < Frame_1.acuteLekt) then begin If Frame_1.SVoksToDo.IndexOf(Frame_1.savestring[Frame_1.savestring.indexOf('NR' + inttostr(iI))+7]) = (-1) then begin if Frame_1.savestring[Frame_1.savestring.IndexOf('Nr' + inttostr(iI)) + 1] = '1' then begin if StrList.IndexOf(Frame_1.savestring[Frame_1.savestring.indexOf('NR' + inttostr(iI))+7]) = (-1) then begin if ((strtofloat(Frame_1.savestring[Frame_1.savestring.IndexOf('NR' + inttostr(iI)) + 2])) / (strtofloat(Frame_1.savestring[Frame_1.savestring.IndexOf('NR' + inttostr(iI)) + 3]))) < (Frame_1.FailRatio - 0.2) then begin StrList.Add(Frame_1.savestring[Frame_1.savestring.indexOf('NR' + inttostr(iI))+7]); end; end; end; end; end; end; begin if StrList.Count >= 3 then begin iI:=random(StrList.Count); Frame_1.SVoksToDo.Add(StrList[iI]); repeat kI:=random(StrList.Count); until kI <> iI; Frame_1.SVoksToDo.Add(StrList[kI]); repeat lI:=random(StrList.Count); until (lI <> iI) and (lI <> kI); Frame_1.SVoksToDo.Add(StrList[lI]); end; end; StrList.Clear; end; //2 Zufall begin for iI := 1 to Frame_1.OverAllVok do begin If ((strtoint(Frame_1.savestring[(Frame_1.savestring.IndexOf('NR'+ inttostr(iI)) + 5)])) < Frame_1.acuteLekt) then begin If Frame_1.SVoksToDo.IndexOf(Frame_1.savestring[Frame_1.savestring.indexOf('NR' + inttostr(iI))+7]) = (-1) then begin if Frame_1.savestring[Frame_1.savestring.IndexOf('Nr' + inttostr(iI)) + 1] = '1' then begin if StrList.IndexOf(Frame_1.savestring[Frame_1.savestring.indexOf('NR' + inttostr(iI))+7]) = (-1) then begin StrList.Add(Frame_1.savestring[Frame_1.savestring.indexOf('NR' + inttostr(iI))+7]); end; end; end; end; end; begin if StrList.Count >= 2 then begin iI:=random(StrList.Count); Frame_1.SVoksToDo.Add(StrList[iI]); repeat kI:=random(StrList.Count); until kI <> iI; Frame_1.SVoksToDo.Add(StrList[kI]); end; end; StrList.Clear; end; // Auffüllen etwaiger Lücken if Frame_1.SVoksToDo.Count < 15 then begin // 2 Zufall begin for iI := 1 to Frame_1.OverAllVok do begin If ((strtoint(Frame_1.savestring[(Frame_1.savestring.IndexOf('NR'+ inttostr(iI)) + 5)])) < Frame_1.acuteLekt) then begin If Frame_1.SVoksToDo.IndexOf(Frame_1.savestring[Frame_1.savestring.indexOf('NR' + inttostr(iI))+7]) = (-1) then begin if Frame_1.savestring[Frame_1.savestring.IndexOf('Nr' + inttostr(iI)) + 1] = '1' then begin if StrList.IndexOf(Frame_1.savestring[Frame_1.savestring.indexOf('NR' + inttostr(iI))+7]) = (-1) then begin StrList.Add(Frame_1.savestring[Frame_1.savestring.indexOf('NR' + inttostr(iI))+7]); end; end; end; end; end; begin if StrList.Count > 0 then begin if Frame_1.SVoksToDO.Count = 1 then begin Frame_1.SVoksToDo.Add(StrList[random(StrList.Count)]); end else begin iI:=random(StrList.Count); Frame_1.SVoksToDo.Add(StrList[iI-1]); repeat kI:=random(StrList.Count); until kI <> iI; Frame_1.SVoksToDo.Add(StrList[kI-1]); end; end; begin iI:=15-Frame_1.SVoksToDo.Count; if iI >= 1 then begin begin for jI := 1 to iI do begin If not (Frame_1.LastVokIndex > Frame_1.OverAllVok) then begin inc(Frame_1.LastVokIndex); If Frame_1.SVoksToDo.IndexOf(Frame_1.savestring[Frame_1.savestring.indexOf('NR' + inttostr(Frame_1.LastVokIndex))+7]) = (-1) then begin Frame_1.SVoksToDo.Add(Frame_1.savestring[Frame_1.savestring.IndexOf('NR' + inttostr(Frame_1.LastVokIndex))+7]); end else begin break; end; end else begin break; end; end; If (Frame_1.LastVokIndex > Frame_1.OverAllVok) then begin //Zufälllig begin for iI := 1 to Frame_1.OverAllVok do begin If ((strtoint(Frame_1.savestring[(Frame_1.savestring.IndexOf('NR'+ inttostr(iI)) + 5)])) < Frame_1.acuteLekt) then begin If Frame_1.SVoksToDo.IndexOf(Frame_1.savestring[Frame_1.savestring.indexOf('NR' + inttostr(iI))+7]) = (-1) then begin if Frame_1.savestring[Frame_1.savestring.IndexOf('Nr' + inttostr(iI)) + 1] = '1' then begin if StrList.IndexOf(Frame_1.savestring[Frame_1.savestring.indexOf('NR' + inttostr(iI))+7]) = (-1) then begin StrList.Add(Frame_1.savestring[Frame_1.savestring.indexOf('NR' + inttostr(iI))+7]); end; end; end; end; end; begin for kI:=1 to (15 - Frame_1.SVoksToDo.count) do begin lI:= random(StrList.Count)+1; //darum geht's: mache ich die Kommentarzeichen weg, ensteht der error! // Frame_1.SVoksToDo.Add('buhuuu'); end; end; StrList.Clear; end; end; end; end; end; end; end; StrList.Clear; end; end; end. MfG Spiderpig
---Zufall ist das Inkognito Gottes---
|
![]() |
Spiderpig_GER_15 |
Öffentliches Profil ansehen |
Mehr Beiträge von Spiderpig_GER_15 finden |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus. Trackbacks are an
Pingbacks are an
Refbacks are aus
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |