ZBEP
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Обнаружил то ли баг, то ли косяк в способе реализации, ток хз как объяснить правильно. Выложу часть кода, может, кто разберется. Код: var Form2: TForm2; NPred,NPrep,NChas:array [0..50,0..100,1..6,1..6]of string; SP:array [1..100] of TEdit; SB:array [1..100] of TRadioButton; IniFile: TIniFile; ... var n,i:integer; begin IniFile:=TIniFile.Create(extractfilepath(paramstr(0))+'Data\BD.ini'); for n:=1 to 30 do for i:=1 to 100 do begin ZPred[i,n]:=IniFile.ReadString('Предмет_'+inttostr(i),inttostr(n),''); ZPrep[i,n]:=IniFile.ReadString('Преподаватель_'+inttostr(i),inttostr(n),''); ZChas[i,n]:=IniFile.ReadString('Часы_'+inttostr(i),inttostr(n),''); end; ... function sIF(F:TForm;Zna1,Zna2:String;Ned,Den,Yro:integer):integer; var Rez,Grp1:integer; begin for Grp1:=1 to 100 do if(Zna1=NPred[Ned,Grp1,Den,Yro])or(Zna2=NPrep[Ned,Grp1,Den,Yro])then Rez:=1; if rez=1 then Result:=0 else Result:=1; end; procedure TForm2.SpeedButton3Click(Sender: TObject); var nre,n,np,Ned,Grp,Den,Yro:integer; begin for n:=1 to 100 do if SB[n].Checked=true then nre:=n; for np:=1 to 30 do for Yro:=1 to 6 do for Grp:=1 to 100 do for Ned:=1 to 50 do for Den:=1 to 6 do begin if (sIF(Form1,ZPred[Grp,np],ZPrep[Grp,np],Ned,Den,Yro)=1)and(NPred[Ned,Grp,Den,Yro]='') then begin NPred[Ned,Grp,Den,Yro]:=ZPred[Grp,np]; NPrep[Ned,Grp,Den,Yro]:=ZPrep[Grp,np]; end; nre:=strtoint(inttostr(nre)); // nre:=strtoint(inttostr(nre)); //Если это стереть, то работает некорректно. nre:=strtoint(inttostr(nre)); //Если заменить на sleep, то все равно будет работать не корректно. nre:=strtoint(inttostr(nre)); //Да и намного дольше. nre:=strtoint(inttostr(nre)); //Если цикл уменьшить к примеру со 100 до 2 nre:=strtoint(inttostr(nre)); //То все нормально работает, но необходимо 100 nre:=strtoint(inttostr(nre)); //Конечно не обязательно именно так делать. nre:=strtoint(inttostr(nre)); //Это первое, что пришло на ум. end; | |