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

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

Сумасшедший цикл [D7, WinXP]


Страницы:   1 2

Creative ©   (2006-11-01 15:54:00) 

Люди добрые помогите, такое вижу впервые.
Есть цикл:

var
MyArray: array [0..3] of TMyClass;
(Value: integer - свойство TMyClass)

implementation

for i:= 0 to 3 do
if MyArray[i].Value = 9 then
begin
...
end;

1. цикл начинается не с 0, а с 4
2. если  MyArray[i].Value = 9 - программа условие пропускает. а если  MyArray[i].Value = 8 - входит в него.

Скажите, кто из нас идиот? Я не против если я, вы только объясните, что происходит!!!


Creative   (2006-11-02 15:23:00) [1]

Сасибо вам огромное. Все в порядке, все работает. В общем можно уже так и не спорить :-)


Плохиш   (2006-11-02 11:43:00) [2]

Интересно, вопрос про циклы с оптимизатором ещё не занял первое место среди самых популярных вопросов?


han_malign   (2006-11-02 11:37:00) [3]


> Watch'ами можно не пользоваться...

- помогает Build и Local symbols + Reference info...
А так же периодическое удаление всех "своих" *.dcu(build иногда "запутывается").


novill   (2006-11-02 11:12:00) [4]

> Понимать нужно

Понимать - это хорошо. Вопрос остается один - как, когда и что оптимизатор решит "соптимизировать"....


Anatoly Podgoretsky   (2006-11-02 10:37:00) [5]

> novill  (02.11.2006 10:14:23)  [23]

можно не пользоваться, а можно пользоваться
Понимать нужно


novill   (2006-11-02 10:14:00) [6]

> [11] Германн ©   (02.11.06 01:26)

Ужасы нашего городка :)

Watch'ами можно не пользоваться...


Anatoly Podgoretsky   (2006-11-02 09:37:00) [7]

> Германн  (02.11.2006 01:26:11)  [11]

> Результат правильный

Правильный, тогда какие претензии


Ketmar   (2006-11-02 03:50:00) [8]

>[20] Германн(c) 2-Nov-2006, 03:41
>Ну да, для тебя "ерунда". Ты то отладчиком не пользуешься,
>совсем про это забыл. :-(
отчего же? я просто оптимизатор отключаю. хотя да -- логи удобней. %-) зря я, что ли, консоль обычно в сложные программы встраиваю? %-)


Германн   (2006-11-02 03:41:00) [9]


> ну, забыли подружить. подумаешь... %-)
>

Ну да, для тебя "ерунда". Ты то отладчиком не пользуешься, совсем про это забыл. :-(


Ketmar   (2006-11-02 03:32:00) [10]

>[18] Германн(c) 2-Nov-2006, 03:23
>Дык, кто-бы сомневался! Омптимизатор работает на все 100!
>Но отладчик ,
>имхо, за ним не успевает! :-)
ну, забыли подружить. подумаешь... %-)


Германн   (2006-11-02 03:23:00) [11]


> Ketmar ©   (02.11.06 03:15) [17]
>
> >[16] Германн(c) 2-Nov-2006, 02:56
> >Ну да. Для Dark, может быть и нормальное, но не для меня!
>
> оптимизатор-с... %-)
>


Дык, кто-бы сомневался! Омптимизатор работает на все 100! Но отладчик ,
имхо, за ним не успевает! :-)


Ketmar   (2006-11-02 03:15:00) [12]

>[16] Германн(c) 2-Nov-2006, 02:56
>Ну да. Для Dark, может быть и нормальное, но не для меня!
оптимизатор-с... %-)


Германн   (2006-11-02 02:56:00) [13]


> Ketmar ©   (02.11.06 02:46) [15]
>
> нормальное поведение.
>

Ну да. Для Dark, может быть и нормальное, но не для меня!


Ketmar   (2006-11-02 02:46:00) [14]

нормальное поведение.


Германн   (2006-11-02 02:45:00) [15]

В добавок к Германн ©   (02.11.06 01:26) [11]
Нашел время проверить и на BDS2006. Тот же результат. Работает всё на OK, но в WatchList лучше не смотреть! :-) Т.е. Лучше не смотреть в WatchList на i и на MyArr[i] :-)


Ketmar   (2006-11-02 02:29:00) [16]

угу. я тут txtSQL раскопал. это нечто. я всегда думал, что я псих. ошибался... %-)


MikePetrichenko   (2006-11-02 02:26:00) [17]


> Сумасшедший цикл

Чаше бывают сумасшедшие "программеры".


Германн   (2006-11-02 01:26:00) [18]


> Jeer ©   (01.11.06 17:02) [7]
>
> Если как-либо использовать индекс цикла (по чтению) внутри
> цикла, то наступает минута просветления.

Иногда наступают "часы ужасов" :-)
Вот например код -
unit Unit12;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}
const
 MyArr : array[0..5] of Integer = (1234,1,2,3,4,-123);

procedure TForm1.Button1Click(Sender: TObject);
var
 i, N : Integer;
begin
 N:=0;
 for i:=0 to 5 do begin
   N:=N+MyArr[i];                         //тут ставишь брейпойнт
   if N < 0 then N:=0;
 end;
 ShowMessage(IntToStr(N));
end;

end.


В WatchList смотришь i, N и MyArray[i].
Проверено в Д4 и Д6.
Результат правильный, но в окошко WatchList лучше не вглядываться :-)


Чапаев   (2006-11-01 19:54:00) [19]

> если  MyArray[i].Value = 9 - программа условие пропускает.
Если я ещё не задолбал форум этим советом... Удали *.dsk из папки с исходниками при незапущенной оболочке, а тогда переоткрывай проект...


Schamane   (2006-11-01 19:07:00) [20]


> Creative   (01.11.06 16:39) [6]

{$O-}


Страницы:   1 2

Наверх

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