|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Проблемка..., подскажите
Здравствуйте!!!
Что-то я запуталась с циклами, у меня много в коде операторов if и begin-ов, подскажите что не правильно в следующем коде, программа не считает Ksi11 и не поставляет нужный Fe и Fk Код:
procedure TForm3.Button5Click(Sender: TObject); var Diam,w,Fk,Fe,KsiTru,Re,lamda,KsiPl,d,F0,Npol,Kn,Ne,Ksi11,KsiVx,KsiVix,Dlina,KsiVxTr,KsiVixTr,KsiTr:real; k,i,j,z:integer; s1,s2:string; begin p:= strtofloat(Form1.StringGrid2.Cells[1,2]); a:=strtofloat(Form1.StringGrid1.Cells[1,5]); b:=strtofloat(Form1.StringGrid1.Cells[1,6]); v:=strtofloat(Form1.StringGrid2.Cells[1,1]); sher:= strtofloat(Form1.StringGrid1.Cells[1,2]); for z := 0 to StringGrid5.RowCount - 1 do StringGrid5.Rows[z].Clear(); Ln:=StrToFloat(Form1.Edit1.Text); Lk:=StrToFloat(Form1.Edit3.Text); Step:=StrToFloat(Form1.Edit5.Text); L:=Ln; i:=1; k:=0; While l<=Lk do begin d:=4*a*b/(2*(a+b)); w:=l/(3600*a*b); F0:=a*b; Kn:=1.355/(sqrt(sqrt(w*w*w))); begin s1:= Form6.ComboBox2.Text; if s1='ÝÃÀ-1-10-6-4-2' then begin Fk:=630; Fe:=16.5; end else if s1='ÝÃÀ-1-10-6-6-3' then begin Fk:=1430; Fe:=16.5; end else if s1='ÝÃÀ-20-9-6-2' then begin Fk:=2830; Fe:=49; end else if s1='Ñ-5' then begin Fk:=254; Fe:=5; end else if s1='ÏÃ-8' then begin Fk:=373; Fe:=7.8; end else if s1='ÄÌ-316' then begin Fk:=541; Fe:=13.3; end; end; begin s2:= Form6.ComboBox1.Text; if s2='Ïëàñòèí÷àòûé' then begin if Form6.FindComponent('ComboBox3') <> nil then Ne:=StrToFloat(TComboBox(Form6.FindComponent('ComboBox3')).Text); if Form6.FindComponent('ComboBox4') <> nil then Npol:=StrToFloat(TComboBox(Form6.FindComponent('ComboBox4')).Text); KsiPl:=Npol*Kn*(0.2+(0.5*Ne))*sqr(F0/Fk); end else if s2='Òðóá÷àòûé' then begin if Form6.FindComponent('Edit2') <> nil then Diam:=StrToFloat(TEdit(Form6.FindComponent('Edit2')).Text); if Form6.FindComponent('Edit1') <> nil then Dlina:=StrToFloat(TEdit(Form6.FindComponent('Edit1')).Text); Re:=(w*Diam)/v; begin if Re<2300 then lamda:=64/Re else if (Re>=2300) and (Re<100000) and ((sher/Diam)>0.00008) and ((sher/Diam)<0.0125) then lamda:=0.11*sqrt(sqrt((sher/Diam)+(68/Re))) else if (sher/Diam)>0.0125 then lamda:=1/(sqr(21*9.8*(Diam/sher)+1.14)); end; KsiVxTr:=0.5*(1-(Fe/Fk))*sqr(F0/Fe); KsiVixTr:=sqr(1-(Fe/Fk))*sqr(F0/Fe); KsiTr:=((lamda*Dlina)/Diam)*sqr(F0/Fe); KsiTru:=KsiVxTr+KsiVixTr+KsiTr; end; // begin KsiVx:=1.6+(0.7*2)*sqr(F0/Fk)+0.1; KsiVix:=0.5*(1-F0/Fk); Ksi11:=KsiVx+KsiPl+KsiTru+KsiVix; Pfil:=(KsiVx+KsiVix+KsiPl+KsiTru)*(sqr(w)/2)*p; Form3.StringGrid5.Cells[0,0]:='Ñêîðîñòü'; Form3.StringGrid5.Cells[1,0]:='Êñïð.âõ.'; Form3.StringGrid5.Cells[2,0]:='Êñïð.âûõ.'; Form3.StringGrid5.Cells[3,0]:='Êñïð.'; Form3.StringGrid5.Cells[4,0]:='Ïîòåðè äàâëåíèÿ'; Form3.StringGrid5.Cells[0,i]:=FloatToStrF(w, ffNumber,15,2); Form3.StringGrid5.Cells[1,i]:=FloatToStrF(KsiVx, ffNumber,15,2); Form3.StringGrid5.Cells[2,i]:=FloatToStrF(KsiVix, ffNumber,15,2); Form3.StringGrid5.Cells[3,i]:=FloatToStr(Ksi11); Form3.StringGrid5.Cells[4,i]:=FloatToStrF(Pfil, ffNumber,15,2); Form3.StringGrid5.Cells[5,i]:=FloatToStr(Pfil); i:=i+1; L:=L+step; k:=k+1; end; end; Form3.StringGrid5.RowCount:=k+1; end; |
#2
|
||||
|
||||
Выкладывай полный листинг
|
#3
|
|||
|
|||
В чем у меня проблема, это считается здесь, и все необходимое для этого здесь считается
Полный листинг очень большой |
#4
|
||||
|
||||
Как ты планируешь чтоб мы тут словили ошибку, если твой кусок кода не компилится без остальной части? Тем более, что у тебя он компилится= значит ошибок в синтаксисе нету.
Пройди по шагам по коду- так и найдешь свою проблему... |
#5
|
||||
|
||||
Вылей всю папку с сорцами, только мусор (*.~*, *.dcu, *.ddp...) почисти.
Покопаюсь, я сегодня свободен. Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#6
|
|||
|
|||
Спасибо за отзывчивость, я разобралась, без округления число выводилось не правильно, и я думала что он его не прибавляет.
|