|
Registriert seit: 17. Mär 2008 298 Beiträge Delphi 7 Personal |
#25
Hier jetzt verbessert:
Delphi-Quellcode:
Ist die makierte Zeile weg geht es, andernfalls nicht...
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 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; //5 aus Aktueller Lektion 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; 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; //2 Problemfälle aus akt. Lektion 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; 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; StrList.Clear; //3 Problemfälle aus letzten beiden Lektionen 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; 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; StrList.Clear; //2 Zufall 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; 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; StrList.Clear; // Auffüllen etwaiger Lücken if Frame_1.SVoksToDo.Count < 15 then begin // 2 Zufall 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; 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; iI:=15-Frame_1.SVoksToDo.Count; if (iI >= 1) and (Frame_1.LastVokIndex <= Frame_1.OverAllVok) then begin showmessage('wird ausgeführt'); 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; end else begin break; end; end; end; if (iI >= 1) and (Frame_1.LastVokIndex > Frame_1.OverAllVok) then begin for iI := 1 to Frame_1.OverAllVok do 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; for kI:=1 to (15 - Frame_1.SVoksToDo.count) do begin // lI:= random(StrList.Count)+1; Showmessage('gehhht'); //=========> Frame_1.SVoksToDo.Add('geh doch, mannooo'); //mache ich es weg geht's, andernfalls der Error! //<========= //StrList.Delete(lI - 1); end; StrList.Clear; end else showmessage('ERROR'); end; StrList.Clear; end; end. immer noch nicht ![]()
---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 |
![]() |
![]() |