Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.10.12;
Скачать: CL | DM;

Вниз

Проблема с условием else   Найти похожие ветки 

 
krolic   (2008-09-08 14:18) [0]

Добрый день. Помогите найти ошибку.
Если делать цикл так, то нужные строки окрашивает в красный
Open;

          IBQuery.First;
          while not (IBQuery.Eof) do
          begin
                 Zapr:=FieldByName("max").AsString;
                 for i:=0 to ListView1.Items.Count-1 do
                      if ListView1.Items[i].SubItems[4] = Zapr  then
                      begin
                           ListView1.Items[i].Data := Pointer(clRed);   ListView1.Invalidate; //Красим строку в красный цвет
                      end;
                  DataModule1.IBQShared.Next;

          end;
Close;

Если добавить условие, то красит все в зеленый, хотя должны быть и красные

Open;
          IBQuery.First;
          while not (IBQuery.Eof) do
          begin
                 Zapr:=FieldByName("max").AsString;
                 for i:=0 to ListView1.Items.Count-1 do
                      if ListView1.Items[i].SubItems[4] = Zapr  then
                      begin
                           ListView1.Items[i].Data := Pointer(clRed);   ListView1.Invalidate; //в красный
                      end
                      else  
                      begin
                           ListView1.Items[i].Data := Pointer(clGreen); ListView1.Invalidate; //в зеленый
                      end;

                  DataModule1.IBQShared.Next;
          end;
Close;


 
Медвежонок Пятачок ©   (2008-09-08 14:23) [1]

И причем здесь "красит в красный", если нет ни намека на сам код раскраски?


 
Медвежонок Пятачок ©   (2008-09-08 14:25) [2]

Кроме того, это что за ребусы?

IBQuery.First;
         while not (IBQuery.Eof) do
         begin
                Zapr:=FieldByName("max").AsString;
                for i:=0 to ListView1.Items.Count-1 do
                     if ListView1.Items[i].SubItems[4] = Zapr  then
                     begin
                          ListView1.Items[i].Data := Pointer(clRed);   ListView1.Invalidate; //Красим строку в красный цвет
                     end;
                 DataModule1.IBQShared.Next;


 
krolic   (2008-09-08 14:30) [3]

Да дело не в раскраске. Дело в том, что в первый код отличается от второго вот чем
1код for i:=0 to ListView1.Items.Count-1 do
                     if Условие1 then
                     begin
                          Красим строку в красный цвет
                     end;

2код
      for i:=0 to ListView1.Items.Count-1 do
                     if Условие1  then
                     begin
                          Красим строку в красный цвет
                     end
                     else  
                     begin
                          в зеленый
                     end;

В результате первого кода, он красит строки в красный, которые удовлетворяю условию1.
А в результате второго кода он все красит в зеленый,несмотря на Условие1.
Мне нужно найти ошибку во втором коде.


 
Медвежонок Пятачок ©   (2008-09-08 14:31) [4]

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

Твой приведенный здесь код ничего не красит.


 
krolic   (2008-09-08 14:31) [5]

На эти ребусы смотреть не надо, надо смотреть на [3] сообщение


 
Медвежонок Пятачок ©   (2008-09-08 14:33) [6]

кроме того, в подготовке данных для раскраски участвует как минимум два датасета. один из которых никто не позиционирует перед началом вычислений. То есть результат не прогнозируем.


 
Медвежонок Пятачок ©   (2008-09-08 14:34) [7]

Твой приведенный здесь код не имеет никакого отношения к раскраске. А ты в нем ищешь философский камень.


 
krolic   (2008-09-08 14:34) [8]

Считай, что вместо красит написано ShowMessage("Красный") и ShowMessage("Зеленый")


 
Медвежонок Пятачок ©   (2008-09-08 14:35) [9]

Считай, что ты нашел ошибку.


 
KilkennyCat ©   (2008-09-08 14:36) [10]

во-первых, так красивше:

         begin
                Zapr:=FieldByName("max").AsString;
                for i:=0 to ListView1.Items.Count-1 do
                     if ListView1.Items[i].SubItems[4] = Zapr  then
                        ListView1.Items[i].Data := Pointer(clRed)
                     else
                        ListView1.Items[i].Data := Pointer(clGreen);
                ListView1.Invalidate;
                DataModule1.IBQShared.Next;
         end;


во-вторых, в чем проблема? условие просто выполняется всегда false...


 
Anatoly Podgoretsky ©   (2008-09-08 14:40) [11]

Дурдом какой то.


 
Сергей М. ©   (2008-09-08 14:41) [12]


> Проблема с условием else
>
> krolic   (08.09.08 14:18)  


И какая же тут проблема ?
Если "в зеленый", значит выполняется соотв.условие, а именно
ListView1.Items[i].SubItems[4] <> Zapr


 
Медвежонок Пятачок ©   (2008-09-08 14:45) [13]

Проблема кролика в том, что он верит, что отличие двух вариантов заключается исключительно в else


 
Palladin ©   (2008-09-08 14:45) [14]

:) обычная стандартная проблема... у аффтора... с логикой...


 
Германн ©   (2008-09-08 14:46) [15]


> Проблема с условием else [D7, XP]
>
> krolic   (08.09.08 14:18)
>
> Добрый день. Помогите найти ошибку.

Это глюк Д7. Переходи на Д2009.


 
Johnmen ©   (2008-09-08 14:47) [16]

Это тот же перец, что и
http://delphimaster.net/view/3-1220246663/
известный, как Finjy или Dagir. На sql.ru как Dagirov.
Все серии здесь
http://delphimaster.net/view/3-1220246663/

Видно его столь же дурную ветку про массивы удалили, так на sql.ru побирается
http://sql.ru/forum/actualthread.aspx?tid=593221


 
krolic   (2008-09-08 14:47) [17]

1код for i:=0 to ListView1.Items.Count-1 do
                    if Условие1 then
                    begin
                         Красим строку в красный цвет
                    end;

2код
     for i:=0 to ListView1.Items.Count-1 do
                    if Условие1  then
                    begin
                         Красим строку в красный цвет
                    end
                    else  
                    begin
                         в зеленый
                    end;

В том то и проблема, что в результате первого кода, он красит, например, 3 и 5 строки в красный. А в результате второго кода все строки в зеленый, хотя 3 и 5 должны быть красными.


 
Медвежонок Пятачок ©   (2008-09-08 14:47) [18]

Один датасет позиционируем на first, из второго читаем значение, третьему делаем next.

Все как у райкина. Каждый отвечает за свои пуговицы.


 
Сергей М. ©   (2008-09-08 14:52) [19]


> 3 и 5 должны быть красными


С какого перепугу "должны" ?


 
Медвежонок Пятачок ©   (2008-09-08 14:54) [20]

Видимо виноват эффект Доплера


 
Amoeba ©   (2008-09-08 14:59) [21]

Этот товарищ уже и сюда с этим вопросом влез
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=65014


 
krolic   (2008-09-08 15:01) [22]

Должны в результате условия
if Условие1  then
                   begin
                        Красим строку в красный цвет
                   end


 
Сергей М. ©   (2008-09-08 15:03) [23]

Ба, да это оказывается подружка !

На троих, видать, соображают  - krolic, Finjy и Dagir)


 
krolic   (2008-09-08 15:04) [24]

АМЁБА тебе не все равно, где я задаю вопросы.Если не чем помочь, то не мешайся под ногами!!!


 
Johnmen ©   (2008-09-08 15:04) [25]

Ну Оксане Белолипецких щас навалится туча народу отвечать. Причем исключительно кодом...:)


 
Медвежонок Пятачок ©   (2008-09-08 15:06) [26]

Должны в результате условия

Если должны и не отдают, то есть сервис соответсвующий.
Пацаны там за определенный процент работают.


 
krolic   (2008-09-08 15:06) [27]

А вот с именем не угадал


 
Johnmen ©   (2008-09-08 15:08) [28]


> А вот с именем не угадал

Да понятно, что целая банда чайников задает вопросы главного самовара по всему инету...:)


 
Сергей М. ©   (2008-09-08 15:09) [29]

krolic   (08.09.08 15:01) [22]


> Должны в результате условия
> if Условие1  then
>                    begin
>                         Красим строку в красный цвет
>                    end
>


Ничего они никому не "должны".

Если условие истинно, то "красим в красный", иначе "не красим в красный" или "красим в некрасный".

Третьего не дано.

Если видишь зеленый, то верь глазам своим - условие ложно.


 
b z   (2008-09-08 15:10) [30]

По понедельникам может быть все. :)


 
имя   (2008-09-08 15:21) [31]

Удалено модератором



Страницы: 1 вся ветка

Текущий архив: 2008.10.12;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.018 c
1-1199986299
MaX
2008-01-10 20:31
2008.10.12
Юникод в делфи


6-1193993911
Artik
2007-11-02 11:58
2008.10.12
Запуск программ по сети.


2-1220858999
pavel_guzhanov
2008-09-08 11:29
2008.10.12
Как закрыть файл Excel, чтобы в нем сохранились изменения?


1-1200314667
opoloxai
2008-01-14 15:44
2008.10.12
DBGrid -> OnKeyDown


2-1220268091
workbench
2008-09-01 15:21
2008.10.12
Запрет закрытия консольного окна