Подскажите что может быть неправильно в этом коде

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

Подскажите что может быть неправильно в этом коде

Сообщение Alexei-Strelok » 05.06.2009 (Пт) 18:57

Допустим у меня есть на форме TextBox1 , кнопка и listbox : когда я нажимаю на кнопку должен добавляться пукт в listbox но вылазит ошибка MS Visual studio
Вот код OnClick-а для кнопки скажите что неправильно
Код: Выделить всё
Public sub Button1_Click
Dim a as string
a = TextBox1.Text
Listbox1.Items.add(Str$(a))
End sub

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Подскажите что может быть неправильно в этом коде

Сообщение arthur2 » 05.06.2009 (Пт) 19:44

Alexei-Strelok писал(а):но вылазит ошибка

КАКАЯ ошибка? Текст сообщения об ошибки прочитай и, очень может быть, сам поймешь, в чем дело :)

Что, по-твоему, в этом коде должна делать функция Str$?
Артур
 
   

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Подскажите что может быть неправильно в этом коде

Сообщение alibek » 05.06.2009 (Пт) 19:49

У ListBox нет свойства Items.
Учи справочник.
Lasciate ogni speranza, voi ch'entrate.

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Re: Подскажите что может быть неправильно в этом коде

Сообщение JohnK » 07.06.2009 (Вс) 9:28

Код: Выделить всё
Public sub Button1_Click
Listbox1.Additem(TextBox1.Text)
End sub


P.S. Примеров в инете полно.
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Подскажите что может быть неправильно в этом коде

Сообщение Debugger » 07.06.2009 (Вс) 9:45

Хаха, а вот и неправильно. Без скобочек надо.

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Re: Подскажите что может быть неправильно в этом коде

Сообщение JohnK » 07.06.2009 (Вс) 9:51

В начале Call пропустил... Хотя и не обязательно. Проверял?
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Подскажите что может быть неправильно в этом коде

Сообщение Debugger » 07.06.2009 (Вс) 10:29

Это такой же рудимент, как и Let.

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Re: Подскажите что может быть неправильно в этом коде

Сообщение JohnK » 07.06.2009 (Вс) 10:33

Следовательно, твои сообщения - флуд, чистой воды.
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Подскажите что может быть неправильно в этом коде

Сообщение Debugger » 07.06.2009 (Вс) 10:38

Вопрос стиля.
Если ты привыкнешь писать аргументы в скобочках, то будет очень плохо. К примеру:
Код: Выделить всё
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Private Sub Form_Load()
    Dim a As Long
    Dim b As Long
    a = 1234
    CopyMemory(a,b,len(a))
    'Эта строчка не пойдет
End Sub

И вообще, давай не развивать холивор на ровном месте в неположенном разделе.

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Re: Подскажите что может быть неправильно в этом коде

Сообщение JohnK » 07.06.2009 (Вс) 11:23

А если поставишь Call, перед именем функции? Я уверен, что пройдет
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: Подскажите что может быть неправильно в этом коде

Сообщение arvitaly » 07.06.2009 (Вс) 12:01

А если поставишь Call, перед именем функции? Я уверен, что пройдет


Да пойдет пойдет, только как бы у автора после этого
Код: Выделить всё
    Public sub Button1_Click
    Listbox1.Additem(TextBox1.Text)
    End sub


новый вопрос не появился: "НЕ РАБОТАЕТ КОД!!"

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Подскажите что может быть неправильно в этом коде

Сообщение alibek » 07.06.2009 (Вс) 13:33

С чего бы ему не работать?
Lasciate ogni speranza, voi ch'entrate.

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Re: Подскажите что может быть неправильно в этом коде

Сообщение JohnK » 07.06.2009 (Вс) 13:43

Просто аж интересно. Давайте определимся. После Delphi и C рука не поворачивается вызывать функцию без скобок. Особенно когда нужно получить результат вызова.
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Подскажите что может быть неправильно в этом коде

Сообщение alibek » 07.06.2009 (Вс) 13:56

А с чего ты решил, что это вызов функции?
Это вызов процедуры. С вычисляемым параметром, который передается по значению.
Lasciate ogni speranza, voi ch'entrate.

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: Подскажите что может быть неправильно в этом коде

Сообщение arvitaly » 07.06.2009 (Вс) 14:01

Потому что

Ошибка времени исполнения '424' - требуется объект

Для корректного вызова процедуры с аргументами в скобках - необходим оператор Call (как я всегда и пишу чтобы не путаться с другими языками)

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

Re: Подскажите что может быть неправильно в этом коде

Сообщение Хакер » 07.06.2009 (Вс) 14:05

Надо понимать, что в Сях скобки являются оператором вызова функции, а то, что стоит слева от скобок (надо понимать, что там не обязательно может стоять имя функции) является просто указателем на функцию. Поэтому именно скобки, а не упоминание имени функции, делают вызов чего-то там. В VB же, напротив, строка вида foo() является атомарным (а не составным, как в сях) выражением, и она вся (целиком) обозначает вызов. Так как указателей концептуально нет, то упоминанию имени функции в принципе не может быть придумано какое-либо применение, кроме как вызов этой функции (случай с AddressOf не в счёт). А раз так, то скобки являются чисто синтаксическим средством, чтобы обозначить, где заканчивается список передаваемых параметров. Никаких иных функций скобки не выполняют.

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

Вызов же Sub-а не являеется ни атомарным выражением, ни вообще каким-либо выражением, а является особым типом statement-а. Раз это не выражение, вызов не может входить в состав какого-то другого выражения. Раз так, то весь statement будет представлять собой имя Sub'а и передаваемые параметры. В этом случае скобки тоже не нужны, потому что не нужно обозначать, где заканчивается список передаваемых параметров (он заканчивается вместе со statement-ом).
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Подскажите что может быть неправильно в этом коде

Сообщение alibek » 07.06.2009 (Вс) 14:05

arvitaly писал(а):Для корректного вызова процедуры с аргументами в скобках - необходим оператор Call (как я всегда и пишу чтобы не путаться с другими языками)

А причем тут это? И неужели трудно проверить, прежде чем говорить?
Если строку запишу так
Код: Выделить всё
Listbox1.Additem (TextBox1.Text)

будет понятнее?
Lasciate ogni speranza, voi ch'entrate.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Подскажите что может быть неправильно в этом коде

Сообщение Mikle » 07.06.2009 (Вс) 14:29

alibek
Тут не аргументы в скобках, а содержащий скобки аргумент. Явно указать номер итема в этих же скобках не удастся.


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

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

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

    TopList