Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите с ;оптимизацией [D3, Win95/98]


Novenkij ©   (2002-08-18 15:35:00) 

Как отключить оптимизацию Делпхи в циклах Фор. С циклом Фор программа не работает, переделываю на While, Repeat все хорошо но мне надоело переделывать в программе очень много вложенных циклов и неправильно оптимизируется. Помогите пожалуйста!


Novenkij   (2002-08-18 15:52:00) [1]

В этом цикле в строке с * возникает ошибка Invalid Floating Operation при трасировке значение MasSh[i].xp не определено
здесь оптимизацию снимал, не помогло. Была этаже ошибка в другом месте for -> while исправил, но всегда так делать не охота

Project/Options/Compiler/Optimization
For i:=1 to KilSh do
Begin
j:=j+1;
* If (MasSh[i].xp<=xps) And (xks<=MasSh[i].xk) Then
Begin
If TMPMasSh[j].h=hs Then
begin
ShowMessage("З даним інтервалом поділу, побудувати краще нближення не можливо.");
Exit;
End;
If (MasSh[i].xp<xps) And (xks<MasSh[i].xk) Then
Begin
//MinZnF(KilKrytT: integer; MasKrytT: TmasKrytTochok; s : String; xp, xk : Extended):Extended;
// TMPMasSh[j].h:=MasSh[i].h;
TMPMasSh[j].xp:=MasSh[i].xp;
TMPMasSh[j].xk:=xps;
TMPMasSh[j].h:=MinZnF(KilKrytT, MasKrytT, s, MasSh[i].xp, xps);
j:=j+1;
TMPMasSh[j].h:=hs;
TMPMasSh[j].xp:=xps;
TMPMasSh[j].xk:=xks;
j:=j+1;
// TMPMasSh[j].h:=MasSh[i].h;
TMPMasSh[j].xp:=xks;
TMPMasSh[j].xk:=MasSh[i].xk;
TMPMasSh[j].h:=MinZnF(KilKrytT, MasKrytT, s, xks, MasSh[i].xk);
KilSh:=KilSh+1;
end;
If (MasSh[i].xp=xps) And (xks<MasSh[i].xk) Then
Begin
TMPMasSh[j].h:=hs;
TMPMasSh[j].xp:=xps;
TMPMasSh[j].xk:=xks;
j:=j+1;
//TMPMasSh[j].h:=MasSh[i].h;
TMPMasSh[j].xp:=xks;
TMPMasSh[j].xk:=MasSh[i].xk;
TMPMasSh[j].h:=MinZnF(KilKrytT, MasKrytT, s, xks, MasSh[i].xk);
end;
If (MasSh[i].xp<xps) And (xks=MasSh[i].xk) Then
Begin
//TMPMasSh[j].h:=MasSh[i].h;
TMPMasSh[j].xp:=MasSh[i].xp;
TMPMasSh[j].xk:=xps;
TMPMasSh[j].h:=MinZnF(KilKrytT, MasKrytT, s, MasSh[i].xp, xps);
j:=j+1;
TMPMasSh[j].h:=hs;
TMPMasSh[j].xp:=xps;
TMPMasSh[j].xk:=MasSh[i].xk;
end;
End
Else
Begin
TMPMasSh[j].h:=MasSh[j].h;
TMPMasSh[j].xp:=MasSh[j].xp;
TMPMasSh[j].xk:=MasSh[j].xk;
End;
End;


^Sanya   (2002-08-18 15:44:00) [2]

а можно на сам цикл посмотреть?


McSimm   (2002-08-18 15:43:00) [3]

Оптимизацию можно выключить сняв галочку в
Project/Options/Compiler/Optimization

либо указав директиву компилятора {$O-}

А насчет неправильной оптимизации цикла - не верю. Ошибка не в оптимизации


Наверх

Титульная страница Поиск, карта сайта Написать письмо