Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 12.06.2006
Сообщений: 48

Помогите разобраться с кодом

25.07.2006, 00:21. Показов 1917. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Поймите меня правильно! Мне реально больше не у кого спросить и негде прочитать! Купил уже около 10 книг по Visual Basic но на этот вопрос не нашёл ответа ни в одной! MSDSN тоже не очень помог...

Чё-то я ваще реально не въезжаю! А чё значит в этом коде Not? В MSDSN написанно что это оператор логического отрицания и чё-то типа этого: "результат = Not выражение" и вот такая табличка:

Выражение Результат
True False
False True
Null Null

А что значит в нижеприведённом коде Not found? Получается так(?):

Not found= found ( сначала found равнялась true(например), а потом стала false???), и тогда какой смысл в If Not found Then?

Ведь в любом случае значение переменной found перевернётся??? Вообще нижеприведённый код работает, но пожалуйста если нетрудно помогите начинающему программеру и особенно прошу Alexey Spirin, не судите строго(!) если мой вопрос в очередной раз покажется Вам верхом тупости просто если Вас не затруднит подскажите, плиз! Зарание спасибо за внимание!
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Option Explicit
 
Private Sub Combo1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
   Dim found As Boolean: Dim i As Integer
   Combo1.Text = Trim(Combo1.Text)
   found = False: i = 0
   Do While (i < Combo1.ListCount) And Not found
      If Combo1.List(i) = Combo1.Text Then
         found = True
      Else
         i = i + 1
      End If
   Loop
   If Not found Then
      Combo1.AddItem (Combo1.Text)
      MsgBox "В список добавлен элемент " + Combo1.Text
   End If
End If
End Sub
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.07.2006, 00:21
Ответы с готовыми решениями:

Помогите разобраться с кодом
Народ!!! Помогите срочно!!! У меня скоро экзамен по инфе, а через 2 дня прогу надо показывать... короче прогу писал половинуя, а другую...

Не могу разобраться с кодом в VB
Есть условие задачи и код программы, нужно объяснить, почему использовался именно этот код. Я совсем не разбираюсь в vb, кто-нибудь сможет...

Помогите с кодом
вот у меня получился код: Private Sub Button1_Click() Dim Y As Double, Y(k-1) As Double, delta As Double Const e As Double = 0.05 ...

10
6 / 6 / 3
Регистрация: 17.10.2007
Сообщений: 1,119
25.07.2006, 01:14
Operator Not est' operator logicheskogo otricaniya. T.e.
dim blnVariable as Boolean
blnVariable = True
blnVariable = Not blnVariable 'posle etogo blnVariable budet ravno False.
Tablichka est' rezul'tat primeneniya operatora Not dlya peremennix, imeyuschix iznachal'nie znacheniya TRUE, FALSE i NULL.
While .... Not Found
oznachaet, chto poka Found = False (t.e. esche chto-to ne najdeno sudya po nazvaniui bulevoj peremennoj Found), cikl budet krutit'sya. Ved' Not Found est' True.
VladConn
0
0 / 1 / 3
Регистрация: 27.03.2012
25.07.2006, 01:59
Мазур, ты че за хрень с java-скриптами добавил?
0
2 / 2 / 0
Регистрация: 09.09.2009
Сообщений: 118
25.07.2006, 03:03
2 Мазур
Я знаю в чем дело, ты переворачиваешь переменную found, а она не переврачивается. Дело в том, что при первом вызове твое подпрограммы твой found переворачивается на Not, но ... подпрограмма заканчивается и при следующем вызове она опять становится found=false и все по новой :-)
В общем надо использовать не Dim, а Static
Static found as Boolean
Тогда переменная found будет сохранять свое значение до следующего вызова подпрограммы.
А строчку присвоения found=false убрать. При первом запуске он и так будет false
0
Irokez
25.07.2006, 13:29
Люди внимательнее читайте вопросы. (зто 1001-му)


Irokez
25.07.2006, 13:45
Где тут ява? Раззувайте глаза, господа.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Private Sub Combo1_KeyPress(KeyAscii As Integer)
' если нажали ентер
If KeyAscii = 13 Then
Dim found As Boolean: Dim i As Integer
' убираем пробелы в тексте комбобокса
Combo1.Text = Trim(Combo1.Text)
' обнуляем переменные
found = False: i = 0
' цикл пока не пройдем все строки и found НЕ = true
Do While (i 
' если строка списка равна тексту, то
If Combo1.List(i) = Combo1.Text Then
' изменяем found
found = True
' иначе
Else
' переходим к следующей строке
i = i + 1
' конец проверки строки
End If
' конец цикла
Loop
' если прошли весь цикл и found всеравно фальш
' тоесть нет в списке такой строки
If Not found Then
' добавляем строку в список
Combo1.AddItem (Combo1.Text)
' сообщаем об этом
MsgBox "В список добавлен элемент " + Combo1.Text
' конец проверки 
End If
' конец проверки нажатой клавиши
End If
' конец процедуры
End Sub
2 / 2 / 0
Регистрация: 09.09.2009
Сообщений: 118
25.07.2006, 14:59
Люди внимательнее читайте вопросы. (зто 1001-му)
Сорри, действительно не дочитал :-( Придется отвечать :-)
2 Мазур
Ну прежде всего логика показанного листинга состоит в следующем: есть элемент ComboBox, в котором есть элементы. Пользователь вводит какое-то значение и нажимает Enter. Перехватывается клавиша KeyAscii=13 (это и есть Ентер) и дальше программа пролистывает список ComboBox и если введенного значения нет в списке, тогда и только тогда добавляет его как новый элемент в список ComboBox.
Переменная found как раз и есть индикатор события: найдено ли значение, введенное пользователем в уже существующем списке.
Изначально found=False (т.е. изначально предполагаем, что введенное пользователем значение отсутствует в нашем уже существующем списке)
Далее идет в цикле сравнение каждого элемента из существующего списка с этим введенным пользователем значением, и если совпадает то присваевается found=True (т.е. совпадение нйдено, введенное пользователем значение уже присутствует в списке). Здесь надо заметить, если совпадений не найдено, found так и останется False, т.е. наше изначальное предположение, что введенное значение отсутствует в списке.
Строка If Not found Then
означает лишь одно: есть введенный элемент в списке или нет? Оператор If выполняет стоящие за ним операторы, если выражение будет TRUE. А так как мы условились, что если found=False, то надо добавить новый элемент, то и получится если сделать Not found, то выражение будет истинным и оператор If выполнит операторы, которые за ним стоят,
Visual Basic
1
2
Combo1.AddItem (Combo1.Text)
MsgBox "В список добавлен элемент " + Combo1.Text
а именно добавит новый элемент.
Если выражение Not found как-то непонятно выглядит для тебя, этот модуль можно переписать так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Combo1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Dim found As Boolean: Dim i As Integer
Combo1.Text = Trim(Combo1.Text)
found = True: i = 0
Do While (i < Combo1.ListCount) And found
If Combo1.List(i) = Combo1.Text Then
found = False
Else
i = i + 1
End If
Loop
If found Then
Combo1.AddItem (Combo1.Text)
MsgBox "В список добавлен элемент " + Combo1.Text
End If
End If
End Sub
При этом программа будет работать абсолютно также как и работала, зато не будет непоняток :-).
0
0 / 0 / 0
Регистрация: 12.06.2006
Сообщений: 48
25.07.2006, 15:50  [ТС]
Теперь всё стало намного понятнее, но всё же, если не трудно, разъясните последнюю непонятку: получается, что программа должна работать следующим образом - строчка If Not found означает "Если переменная found равна false", но ведь если условие записанное в теле цикла выполнится то found будет равняться True (то есть искомая строка в Combo1.List найдена!) а условие If Not found будет значить (Если переменная found равна false и всё равно получится как будто искомая строка не найдена и вылезет окно "В список добавлен элемент: Combo1.Text". Почему же в реале всё работает совершенно наоборот? А можно ли Not found трактовать как "изменилось ли значение переменной found", а If Not found Then как "если значение переменной не изменилось то..."
0
6 / 6 / 3
Регистрация: 17.10.2007
Сообщений: 1,119
25.07.2006, 19:53
Мазур
...то found будет равняться True (то есть искомая строка в Combo1.List найдена!) ...
Prosto dlya poslednego primera pereiminuj peremennuyu "found" v , naprimer, "blnNotFound". Ne bud' plennikom imen, smotri shire!
VladConn
0
0 / 0 / 0
Регистрация: 12.06.2006
Сообщений: 48
25.07.2006, 20:05  [ТС]
Большое спасибо теперь совсем всё понятно! До встречи!
0
2 / 2 / 0
Регистрация: 09.09.2009
Сообщений: 118
27.07.2006, 03:36
VladConn (25.07.2006)
Мазур
Prosto dlya poslednego primera pereiminuj peremennuyu "found" v , naprimer, "blnNotFound". Ne bud' plennikom imen, smotri shire!
VladConn
Да, согласен тогда переменную лучше назвать NotFound, по крайней для читабельности программы, а то сейчас редко, кто пишет комментарии :-)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.07.2006, 03:36
Помогаю со студенческими работами здесь

Помогите с кодом cn.Open [connection string goes here], [username], [password]
Для открытия базы данных имеем следующий стандартный код cn.Open , , Какой конкретно вид имеет connection string? Предположим, БД...

Помогите разобраться с mscomm?
Не могу установить связь с контроллером по com порту набираю например mscomm1.portopen = true mscomm1.output = 'Erase' От...

Помогите разобраться с Coolbar'ом
Помогите разобраться с Coolbar''ом, в частности, со свойством Clild. Заранее спасибо.

Помогите разобраться с LPT
Всем доброго времени! (сразу спасибки, что не пропустили тему!) Как-то раньше не задумывался над вопросом работы с внешними устройствами...

Помогите разобраться с GetOpenFileName.
Дайте рабочий пример с GetOpenFileName/GetSaveFileName в MSDN'е там они с каким-то типом работают OPENFILENAME или как-то так, в общем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru