Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.04.2008, 14:38
PashaXP PashaXP вне форума
Новичок
 
Регистрация: 05.02.2008
Сообщения: 81
Репутация: 15
По умолчанию Условие не выполняется

Столкнулся с проблемой, если добавляю условие s[j]<>'|', т.е. как указано ниже, то в ELSE вообще не попадаю!!! Хотя условие должно выполнится 5-ь раз, если логически рассуждать. Но почему код не работает. Если убираю s[j]<>'|', условие срабатывает 4-е раза.
Строки вида - V3I SE7779AD3U1 SE7779AV1U1 SE7779AD1U1 SE9620AE7U1
Код:
   for j:=Length(Poisk_In_File)+1 to Length(S) do
       begin
          If (s[j]<>'  ')OR(s[j]<>'|') then Iskom_Str:=Iskom_Str+s[j]
          Else
            begin
              .....
            end;
       end;
??? Работает так как еслибы было не OR а AND???
Ответить с цитированием
  #2  
Старый 07.04.2008, 14:57
Аватар для mav_c
mav_c mav_c вне форума
Активный
 
Регистрация: 26.03.2007
Адрес: Москва
Сообщения: 287
Репутация: 30
По умолчанию

Цитата:
Сообщение от PashaXP
Столкнулся с проблемой, если добавляю условие s[j]<>'|', т.е. как указано ниже, то в ELSE вообще не попадаю!!! Хотя условие должно выполнится 5-ь раз, если логически рассуждать. Но почему код не работает. Если убираю s[j]<>'|', условие срабатывает 4-е раза.
Строки вида - V3I SE7779AD3U1 SE7779AV1U1 SE7779AD1U1 SE9620AE7U1
Код:
 
   for j:=Length(Poisk_In_File)+1 to Length(S) do
       begin
          If (s[j]<>'  ')OR(s[j]<>'|') then Iskom_Str:=Iskom_Str+s[j]
          Else
            begin
              .....
            end;
       end;
??? Работает так как еслибы было не OR а AND???

Так тебе тут и нужен не OR а AND
__________________
---------------------------------------------
Программирование - не профессия, а стиль жизни
Ответить с цитированием
  #3  
Старый 07.04.2008, 16:08
Аватар для Johnson
Johnson Johnson вне форума
Прохожий
 
Регистрация: 13.03.2008
Сообщения: 11
Репутация: 10
По умолчанию

когда чтото не получается - пробуй подставить действия попроще:
в твоём случае это выглядеть будет так:

Код:
          If not(s[j]='  ')OR not(s[j]='|') then Iskom_Str:=Iskom_Str+s[j]
          Else
            begin
              .....
            end;

тут получается взаимоисключение, как видишь... например есть символ '|', но он не равен ' ', значит true, действие выполнится, опять же если символ ' ', то он не равен '|', и опять действие выполняется )

если я правильно понял, тебе нудно сделать так: если символ не ' ' и не '|', то действия выполняется, тогда нужно просто OR (оператор ИЛИ) заменить на AND (оператор И)
__________________
Если Вы недовольны моими действиями, Вам СЮДА.
Ответить с цитированием
  #4  
Старый 07.04.2008, 16:33
Phedor Phedor вне форума
Начинающий
 
Регистрация: 28.02.2008
Сообщения: 118
Репутация: 21
По умолчанию

Цитата:
Сообщение от PashaXP
Столкнулся с проблемой, если добавляю условие s[j]<>'|', т.е. как указано ниже, то в ELSE вообще не попадаю!!! Хотя условие должно выполнится 5-ь раз, если логически рассуждать. Но почему код не работает. Если убираю s[j]<>'|', условие срабатывает 4-е раза.
Строки вида - V3I SE7779AD3U1 SE7779AV1U1 SE7779AD1U1 SE9620AE7U1
Код:
   for j:=Length(Poisk_In_File)+1 to Length(S) do
       begin
          If (s[j]<>'  ')OR(s[j]<>'|') then Iskom_Str:=Iskom_Str+s[j]
          Else
            begin
              .....
            end;
       end;
??? Работает так как еслибы было не OR а AND???


1. Первое условие у тебя никогда не сработает. Если ты из кода скопировал, то обрати внимание что s[j] - это единичный символ, а тут ' ' два символа.
2. Если тебе просто нужно убрать пробелы и знак '|'. Возможно проще сделать так?
Код:
Iskom_Str := StringReplace(copy(s, length(Poisk_In_File), length(s)), ' ', '', [rfReplaceAll]);
Iskom_Str := StringReplace(Iskom_Str, '|', '', [rfReplaceAll]);
Ответить с цитированием
  #5  
Старый 07.04.2008, 16:40
PashaXP PashaXP вне форума
Новичок
 
Регистрация: 05.02.2008
Сообщения: 81
Репутация: 15
По умолчанию

Да Johnson ты меня правильнопонял, попробую... Спасибо за советы!!! Точно. Два символа!))) Сам себя запутал.... Спасибо большое! А код нахидит в строке слова и добавляет их в Combobox...
Ответить с цитированием
  #6  
Старый 07.04.2008, 17:45
Phedor Phedor вне форума
Начинающий
 
Регистрация: 28.02.2008
Сообщения: 118
Репутация: 21
По умолчанию

Цитата:
Сообщение от PashaXP
Да Johnson ты меня правильнопонял, попробую... Спасибо за советы!!! Точно. Два символа!))) Сам себя запутал.... Спасибо большое! А код нахидит в строке слова и добавляет их в Combobox...

Для слов можн оиспользовать стандартный объект типа TParser :-)
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:59.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025