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

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

Вот так грабли 8-) [D7, WinXP]


Zhekson ©   (2005-01-17 09:30:00) 

Это рабочий код:

   while (SG1.Cells[Col, Row] <> ' --') do
     begin
     .................................
     end;


А это нет:

   while (SG1.Cells[Col, Row] <> ' --') or (SG1.Cells[Col, Row] <> ' ! ') do
     begin
     .................................
     end;


Не то что на ' ! ' не останавливается, а на ' --' перестаёт останавливаться. Это как понимать?


Anatoly Podgoretsky   (2005-01-17 10:52:00) [1]

Neznaika ©   (17.01.05 10:07) [13]
Оно и выполнится, возможно.


Neznaika   (2005-01-17 10:11:00) [2]

Все понял...
Вчерашнее пиво совсем мозги атрофировало...


begin...end   (2005-01-17 10:08:00) [3]

> [13] Neznaika ©   (17.01.05 10:07)

True and False = False


Neznaika   (2005-01-17 10:07:00) [4]

Че-то я вообще запутался: так при AND IMHO должны выполнится оба условия, а ему надо при одном совпадении выпасть из цикла?


Zhekson   (2005-01-17 10:06:00) [5]

Всем спасибо. C andзаработало...

так точно, будет trueведь перекрыть этот цикл можно только если и то и то = true.


begin...end   (2005-01-17 09:57:00) [6]

> [10] Zhekson   (17.01.05 09:55)
Ну потому что условие (SG1.Cells[Col, Row] <> ' --') or (SG1.Cells[Col, Row] <> ' ! 'ВСЕГДА истинно. Зачем же его вычислять?


Zhekson   (2005-01-17 09:55:00) [7]

[4]

весь код там ни при чём... вопрос в том, почему конструкции

while (SG1.Cells[Col, Row] <> ' --') и while (SG1.Cells[Col, Row] <> ' ! ')

по отдельности работают, а

while (SG1.Cells[Col, Row] <> ' --') or (SG1.Cells[Col, Row] <> ' ! ')

не работают ;((


begin...end   (2005-01-17 09:54:00) [8]

> [8] Neznaika ©   (17.01.05 09:52)

Именно так. Тоже будет TRUE.


Neznaika   (2005-01-17 09:52:00) [9]


> ALS ©   (17.01.05 09:49) [7]
> Непонятно, что ты хотел достичь проверкой
> (SG1.Cells[Col, Row] <> ' --') or (SG1.Cells[Col, Row] <>
> ' ! ') ?
> Это условие всегда будет TRUE.


Я чего-то не понимаю? А если у него в 1 строке '--' во 2 '!' а в 3 'хрен' тоже будет true


Neznaika   (2005-01-17 09:49:00) [10]

Недавно делал что-то похожее, только с помощью repeat..until
В условии until вписывал необходимые условия и все работало.
И вообще я почему- то repeat люблю БОЛЬШЕ...


ALS   (2005-01-17 09:49:00) [11]

Непонятно, что ты хотел достичь проверкой
(SG1.Cells[Col, Row] <> ' --') or(SG1.Cells[Col, Row] <> ' ! ') ?
Это условие всегда будет TRUE. Попробуй
(SG1.Cells[Col, Row] <> ' --') and(SG1.Cells[Col, Row] <> ' ! ')


Александр Иванов   (2005-01-17 09:48:00) [12]

and насколько я понял надо


begin...end   (2005-01-17 09:47:00) [13]

> [3] Zhekson   (17.01.05 09:43)

Вы бы хоть код тела цикла привели...


Zhekson   (2005-01-17 09:43:00) [14]

это код прохода по таблице(StringGrid) пока в ячейке не встретится ' --'; Тут всё работает, а вот если я добавлю

or (SG1.Cells[Col, Row] <> ' ! ')


то проход по таблице осуществляется, но ни на ' --' не останавливается ни на ' ! '.

8-)


begin...end   (2005-01-17 09:33:00) [15]

> Zhekson   (17.01.05 09:30)

Ну то, что может не останавливаться на втором условии, - это как раз понятно. И зависит это от значения первого условия. При соответствующей настройке компилятора, разумеется.

А результаты работы этого цикла - нетакие, как должны быть?


Александр Иванов   (2005-01-17 09:31:00) [16]

Что значит останавливается? Если говорит об ошибке, то неплохобы на ее текст посмотреть.


Наверх

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