Помогите найти ошибку в конструкции

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
leb-serg
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 01.08.2007 (Ср) 18:19

Помогите найти ошибку в конструкции

Сообщение leb-serg » 01.08.2007 (Ср) 18:29

почему то при любом выборе выдает значение 174. Помогите?


Код: Выделить всё
Private Sub Command1_Click()

Rem ДАЕМ НАЗВАНИЯ ПУНКТОВ ПРИ РАСЧЕТЕ НОРМЫ ХОДОВОГО ВРЕМЕНИ
Label4.Caption = Combo1.Text
Label6.Caption = Combo2.Text


Rem Череповец - Астрахань

Rem ВВЕРХ С ГРУЗОМ

If Combo1.Text = "Череповец" And Combo2.Text = "Астрахань" And Check1.CausesValidation = True And Check3.CausesValidation = True Then
Label8.Caption = "195"
End If

Rem ВНИЗ ПОРОЖНЕМ
If Combo1.Text = "Череповец" And Combo2.Text = "Астрахань" And Check2.CausesValidation = True And Check4.CausesValidation = True Then
Label8.Caption = "157"
End If

Rem ВВЕРХ ПОРОЖНЕМ
If Combo1.Text = "Череповец" And Combo2.Text = "Астрахань" And Check1.CausesValidation = True And Check4.CausesValidation = True Then
Label8.Caption = "176"
End If

Rem ВНИЗ С ГРУЗОМ
If Combo1.Text = "Череповец" And Combo2.Text = "Астрахань" And Check2.CausesValidation = True And Check3.CausesValidation = True Then
Label8.Caption = "174"
End If

Rem Череповец - Красноармейск




End Sub

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 01.08.2007 (Ср) 19:12

Потому что все четыре условия совпадают?
Изображение

leb-serg
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 01.08.2007 (Ср) 18:19

Сообщение leb-serg » 01.08.2007 (Ср) 19:35

а как быть?

leb-serg
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 01.08.2007 (Ср) 18:19

Сообщение leb-serg » 01.08.2007 (Ср) 19:38

у меня теперь:

If Combo1.Text = "Череповец" And Combo2.Text = "Астрахань" And Check2.Enabled = True And Check3.Enabled = True Then
Text1.Text = "174"
End If


If Combo1.Text = "Череповец" And Combo2.Text = "Астрахань" And Check2.Enabled = True And Check4.Enabled = True Then
Text1.Text = "157"
End If

и фишка в том, что он выдает всегда значение по ПОСЛЕДНЕМУ условию

leb-serg
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 01.08.2007 (Ср) 18:19

Сообщение leb-serg » 01.08.2007 (Ср) 19:43

меня тут идея посетила. а может быть есть другой способ, иначе представить все эти данные? Просто иначе код длинный получается и памяти много занимает.

Задача на первый взгляд проста:
Есть пункт А и Б
Мы можем ехать по направлению А-Б или Б-А
Мы можем ехать с грузом или порожнем
для каждого будет время езды разное, как сделать так чтоб это работало? Мои усилия напрасны, судя по вышеуказанному коду

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 01.08.2007 (Ср) 20:03

Постить несколько сообщений подряд, вместо внесения изменений в последнее - некрасиво, а в последствии - наказуемо.

Использовать Rem для комментировать, пожалуй, тоже некрасиво :) (хорошо хоть Let не используется)


Код: Выделить всё
If Combo1.Text = "Череповец" And Combo2.Text = "Астрахань" And Check2.Enabled = True Then And

    Select Case True
        Case Check3.Enabled
             Text1.Text = "174"

         Case Check4.Enabled
                Text1.Text = "157"
      End select
End If


Но, сдаётся мне, чекбоксы используются ошибочно, вместо оoption-ов.

ADDED:

Перечитал последнйи пост. Из описания задачи понял, что планируемый интерфейс программы совершенно неправильно организован, и соответственно - решений также кривое.

Опиши, сколько может быть направлений.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 01.08.2007 (Ср) 21:17

Народ, может всё-таки CheckX.Value, а?
Изображение

leb-serg
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 01.08.2007 (Ср) 18:19

Сообщение leb-serg » 01.08.2007 (Ср) 23:18

смысл задачи которая стоит перео мной такая:
следует из комбобоксоа1 и 2 выбрать выбрать город отправления и город прибытия соответственно. При этом в другом поле должно всвечиваться расстояние от комбобокса 1 до 2.
при этом нормы пути разные.
они представлны в табличной форме типа:

город движение в вверх движение вниз
в грузу \ порожнем грузу\ порожнем
череповец 195\176 0\0
переборы 185\167 10\9
городец 156\140 36\33
казань 123\111 64\58

итак, вы из option выбираем куда мы двигаемся 1) вверх 2) вниз и как: 1) порожнем 2) в грузу

например, если мы идем из череповца в городец (это всегда только вниз), но можем в грузу или порожнем. если мы идем из череповца в городец в порожнем то норма = 33 часа, а если в грузу то норма 36 часов

и так нужно для всех городов.

вопрос: как бы это все организовать 1) то ли из файла txt 2) то ли БД отдельной

ни первый ни второй вариант я не знаю, и сначала решил делать так:

Код: Выделить всё
Rem                        -ВНИЗ-  направление:  Ч Е Р Е П О В Е Ц  --  А С Т Р А Х А Н Ь
Rem Череповец - Астрахань
Rem
Rem ВНИЗ С ГРУЗОМ
If Combo1.Text = "Череповец" And Combo2.Text = "Астрахань" And Check2.Value = 1 And Check3.Value = 1 Then
Text1.Text = "174"
End If

Rem ВНИЗ ПОРОЖНЕМ
If Combo1.Text = "Череповец" And Combo2.Text = "Астрахань" And Check2.Value = 1 And Check4.Value = 1 Then
Text1.Text = "157"
End If

Rem Череповец - Красноармейск
Rem Rem ВНИЗ С ГРУЗОМ
If Combo1.Text = "Череповец" And Combo2.Text = "Красноармейск" And Check2.Value = 1 And Check3.Value = 1 Then
Text1.Text = "145"
End If

Rem ВНИЗ ПОРОЖНЕМ
If Combo1.Text = "Череповец" And Combo2.Text = "Красноармейск" And Check2.Value = 1 And Check4.Value = 1 Then
Text1.Text = "131"
End If



но ведь это ужасно много, примерно 2000 таких строк
поэтому встает вопрос, как бы это организовать поудобнее

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 02.08.2007 (Чт) 7:40

Блин. Написано настолько ужасно, что понятнее не ставновится. Попробую перечитать ещё раз и хоть чуть-чуть вникнуть.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 02.08.2007 (Чт) 8:23

Не ужасно, просто стиль другой, стиль советских компов. Оттого и непривычно.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 02.08.2007 (Чт) 8:25

Какой ещё стиль советских компов? :?

город движение в вверх движение вниз

Как это предложение понять?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

leb-serg
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 01.08.2007 (Ср) 18:19

Сообщение leb-serg » 02.08.2007 (Чт) 19:47

Хакер писал(а):Какой ещё стиль советских компов? :?

город движение в вверх движение вниз

Как это предложение понять?




Просто это таблица, которую я сделал, а тут таблицы не показываются
Пот так все в кучу и получилось

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 02.08.2007 (Чт) 19:56

Хочешь моноширинные таблицы - юзай тег [сode]

Ещё раз - давай сюда все вомзожные направления, возможные состояния транспорта и тд. И для каждой комбинации её "стоимость". Если "стоимость" для комбинации подчиняется какому-то правилу (закону) - вообще замечательно.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 02.08.2007 (Чт) 20:07

Хакер писал(а):Ещё раз - давай сюда все вомзожные направления, возможные состояния транспорта и тд.

Ни в коем случае не надо здесь этого щастья из 2000 вариантов.

Автор, если просто учится на жд-ориентированном примере -- тогда пусть, но если на секунду представить, что этот нереальный ужас будет иметь касательство к реальной ЖД, становится жутко.

Кодирование таких данных в тексте программы таким образом -- это маразм слишком большого уровня. Для разнообразия автору рекомендуется представить себе 3D-движок, который рисует картинку так:
Код: Выделить всё
If машинка1.left = 1 and машинка2.left = 1 then
  ...
end if

If машинка1.left = 1 and машинка2.left = 2 then
  ...
end if

If машинка1.left = 1 and машинка2.left = 3 then
  ...
end if

<Ещё несколько миллиардов строк с вариантами>



Автор, изучи тему "Двумерные массивы". Правда.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

FaKk2
El rebelde gur&#250;
El rebelde gur&#250;
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 02.08.2007 (Чт) 20:24

Хорошая история на ЧЗХ.ком :)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 103

    TopList