![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вот так грабли 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]Что значит останавливается? Если говорит об ошибке, то неплохобы на ее текст посмотреть.