Чем отличается a=textbox.text (='') и a='' ?

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

Чем отличается a=textbox.text (='') и a='' ?

Сообщение Nikita » 29.10.2003 (Ср) 16:41

textbox.text - пустая строка
есть объект со свойством Name, когда я пишу obj.Name=textbox.text то obj.Name не становится пустой строкой, вообще не меняется, а когда пишу obj.Name="" то очищается
почему? в чем отличие?

Ducis
Бывалый
Бывалый
 
Сообщения: 232
Зарегистрирован: 24.04.2002 (Ср) 15:36

Re: Чем отличается a=textbox.text (='') и a='' ?

Сообщение Ducis » 31.10.2003 (Пт) 12:40

Nikita писал(а):textbox.text - пустая строка
есть объект со свойством Name, когда я пишу obj.Name=textbox.text


То ты пытаешься св-ву Name (имя) объекта obj присвоить пустую строку. Ты когда-нибудь видел безымянные объекты?

Nikita писал(а):то obj.Name не становится пустой строкой,


Ес-но.

Nikita писал(а): вообще не меняется,


Св-во Name вообще задается при разработке и во время выполнения не меняется.

Nikita писал(а): а когда пишу obj.Name="" то очищается
почему?


Именно Name очищается? Не верю! ( (с) Станиславский )

Nikita писал(а): в чем отличие?


Есть св-ва по умолчанию. (В .Net их уже нет, каламбур, однако :) )
Если ты напишешь Text1=vbNullString, то нулевой строкой станет св-во Text объекта Text1. По всей видимости, тут дело в этом.
Понимаешь? (с)Б.Ельцин.

Nikita
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 05.02.2003 (Ср) 15:09
Откуда: Russia

Сообщение Nikita » 31.10.2003 (Пт) 14:56

obj.Name это не имя объекта, а просто свойство, строка :) и может быть любым
и потому ему прекрасно присваивается ""
переназовем это как obj.str чтоб не возникало двусмысленностей

возвращаясь к, если в textbox пустая строка, то textbox.text и "" - разные значения?

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 31.10.2003 (Пт) 17:09

Нет, не должны они отличаться...
Чудес на свете не бывает... Объект - это твой объект? Ты сам писал это свойство? Зайди внутрь, посмотри, что точно передалась пустая строка...

Если ты во всем уверен - покажи код. Или сам проверь маленькую часть своего кода на новом проекте.

Nikita
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 05.02.2003 (Ср) 15:09
Откуда: Russia

Сообщение Nikita » 31.10.2003 (Пт) 17:27

сюшный код объекта

STDMETHOD(put_MiddleName)(/*[in]*/ BSTR newVal);

STDMETHODIMP CGBUser::put_MiddleName(BSTR newVal)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())

// TODO: Add your implementation code here
if( newVal == NULL )
return S_FALSE;

m_MiddleName = CString( newVal );
return S_OK;
}

получается, когда присваивается textbox.text оно понимается как null?

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 31.10.2003 (Пт) 18:15

Ты же можешь сам отладить и посмотреть.
Присоединись к своему процессу и посмотри, что там передалось - доходит до присвоения или нет...

Хм... И правда интересный эффект. Я поотлаживала эту штуку. Эффект одинаковый, если присваивать из VB textbox.text и vbNullString. Обе вещи воспринимаются как NULL...

Надо изучить вопрос...

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

Сообщение GSerg » 01.11.2003 (Сб) 8:28

Не надо его изучать...
Надо факи читать...
Ибо там написано, что vbnullstring=NULL, а "" есть валидный указатель на bstr нулевой длины.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Nikita
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 05.02.2003 (Ср) 15:09
Откуда: Russia

Сообщение Nikita » 01.11.2003 (Сб) 15:44

т.е. если textbox не содержит текста, то он равен vbnullstring? но это ведь неудобно, на каждое присвоение нужно писать if .text="" then присваиваем "" else присваиваем .text

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

Сообщение GSerg » 02.11.2003 (Вс) 5:25

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

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

Сообщение alibek » 02.11.2003 (Вс) 17:12

Можно попробовать написать
Код: Выделить всё
obj.Name = (TextBox1.Text)
Lasciate ogni speranza, voi ch'entrate.

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 03.11.2003 (Пн) 11:38

To GSerg: А чтение литературы - это не изучение вопроса? :wink:

GSerg писал(а):А может лучше код объекта исправить?

Да. По моему, было бы логично в самом объекте считать NULL эквивалентным пустой строке.

alibek писал(а):obj.Name = (TextBox1.Text)

Я идиот! Убейте меня, кто-нибудь! А чем это может помочь?

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Сообщение Vi » 04.11.2003 (Вт) 9:39

Как Сишник скажу, что код объекта
Код: Выделить всё
if( newVal == NULL )
  return S_FALSE;

неправильный. BSTR может иметь NULL в качестве своего верного значения. Что под этим понимает программа - это другое дело. Однако ситуации
BSTR bstrTExt = NULL;
и
BSTR bstrTExt = SysAllocStringLen(NULL,0); // т.е. указатель на нулевой символ
логически эквивалентны. И могут быть конвертированы один в другой во время передачи. Т.е. ты передаешь NULL, а придет указатель на буфер с нулевым символом. И наоборот.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН


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

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

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

    TopList  
cron