Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 | 2 |

 

  Вопрос: символ пустой строки Добавлено: 07.11.06 21:57  

Автор вопроса:  Alexander
есть такое или нет? хочу в одной прогрммке выход из цикла очуществлять, когда встречается пустая ячейка. как объяснить программе, что ячека пустая? может, есть какой-нить специальный символ?

Ответить

  Ответы Всего ответов: 21  

Номер ответа: 1
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #1 Добавлено: 07.11.06 22:01
""

Ответить

Номер ответа: 2
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #2 Добавлено: 07.11.06 22:17
vbNullString

Ответить

Номер ответа: 3
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #3
Добавлено: 07.11.06 22:17
""
range("A1";).text = ""
:)

Ответить

Номер ответа: 4
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #4 Добавлено: 07.11.06 22:32
if trim$(range("A1";).text) = "" then exit for

Ответить

Номер ответа: 5
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #5 Добавлено: 07.11.06 22:50
ну и последнее, что осталось проверить, так это длину строки в ячейке.. )))

Ответить

Номер ответа: 6
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #6
Добавлено: 07.11.06 22:51
if trim$(range(chr(a)&b).text) = "" then exit for
:)

Ответить

Номер ответа: 7
Автор ответа:
 Sacred Phoenix



ICQ: 304238252 

Вопросов: 52
Ответов: 927
 Профиль | | #7 Добавлено: 07.11.06 23:12
глупый мож вопрос, vbNullString = "" ???

Ответить

Номер ответа: 8
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #8 Добавлено: 07.11.06 23:13
Конечно! )

Ответить

Номер ответа: 9
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #9 Добавлено: 07.11.06 23:35
if trim$(range(chr(a)&b).text) = "" then exit for

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

Вспомнил - результат работы каждой переменной приходится проверять на Notihg, иначе *здец :)

PS Вот так вот писать нельзя:

Dim Name As String = IIf(User IsNot Nothing, User.Name, "пользователь не найден";)

Иначе капец будет

Зато в C# можно:
string Name = !(User is null) ? User.Name : "Юзер не найден";

Нравится мне эта фишка сишарповая...

Ответить

Номер ответа: 10
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #10 Добавлено: 08.11.06 00:38
On Error Resume Next - ненадо проверять на Notihg

:) Ну оно конеч херовое решение, но все же...

Впрочем если переменная была
Dim as...

врядли она будет Notihg...

пока её принудительно ктонибуть не
Set переменная = Notihg

Ответить

Номер ответа: 11
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #11 Добавлено: 08.11.06 01:11
On Error Resume Next - ненадо проверять на Notihg

Самый отстойный обработчик ошибок из всех которые только можно придумать.

Иногда еще встречаю в чужих VB .NEt-проектах офигенную обработку ошибок:

Sub AnySub()
    On Error Resume Next
    ' some code goes here
End Sub

За такое надо ставить и расстреливать

Ну или более .NET-овский вариант
Sub AnySub()
    Try
    ' some code here
    Catch ex As Exception
    End Try
End Sub


Ужос короче, тоже расстреливать нужно.
Как сказал в сердцах один готдотнетовец, "Если бы я мог переписать компилятор vbc, я бы сделал так, чтоб пустые блоки Catch считались ошибками"

Dim as...

врядли она будет Notihg...

Знаешь, трудно было объяснять заказчику, почему MyString.Length выдвал NullReferenceException... И тогда я впервые для себя обнаружил, что

Dim A As String


объявляет строковую переменую. Но она, увы, равна не "", а Nothing.


Короче, вот, берите зубило и высекайте на мраморе:
    <ComponentModel.EditorBrowsable(ComponentModel.EditorBrowsableState.Always)> _
    Public Property Name() As String
        Get
            Return _Name
        End Get
        Set(ByVal value As String)
            If value IsNot Nothing Then
                If value.Length > NameMaxLength Then
                    Throw New DataTooLongException(NameMaxLength)
                End If
                _Name = value
            Else
                _Name = ""
            End If
    
        End Set
    End Property

Ответить

Номер ответа: 12
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #12 Добавлено: 08.11.06 06:10
глупый мож вопрос, vbNullString = "" ???

Конечно! )


Иногда лучше жевать, чем говорить.
Конечно нет.

Ответить

Номер ответа: 13
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #13 Добавлено: 08.11.06 11:23
:-)))
GSerg, блин.. ну вот взял и все испортил!
Надеюсь, ты понимаешь, что это было не серьезно?
Каков вопрос - таков ответ.. ))) Уж кто-кто, а Sacred Phoenix должен знать такие вещи, далеко не новичок.. )))

Но она, увы, равна не "", а Nothing

Я как то тоже на эти грабли наступил.. с тех пор при объявлении строковой переменной сразу инициализирую ее..

Ответить

Номер ответа: 14
Автор ответа:
 Sacred Phoenix



ICQ: 304238252 

Вопросов: 52
Ответов: 927
 Профиль | | #14 Добавлено: 08.11.06 16:16
Sacred Phoenix должен знать такие вещи, далеко не новичок.. )))
во-первых, я спросил, потому что давненько как-то у меня была хня по этому поводу. Во-вторых, я говорил про vb6, ща вот написал Call Msgbox(vbNullString = "";), вылезло True.

А касательно vb2005:

Dim A As String
MessageBox.Show(CStr(A = "";))

выдало True. Смотрю в Quick View'ере значение A. Пишет Nothing. Че за?

Ответить

Номер ответа: 15
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #15 Добавлено: 08.11.06 19:18
А ты попробуй выполнить это:
        Dim A As String
        MessageBox.Show(A.Length)

И получишь NullReferenceExeption
Тоже самое ты получишь, если напишешь
Dim A As String = vbNullString

Ибо в священном писании (MSDN from MS) четко написано:
Public Const vbNullString As String = Nothing
     Member of: Microsoft.VisualBasic.Constants
Summary:
When you call print and display functions, you can use the following constants in your code in place of the actual values.


И в НЕТ для объявления пустой строки рекомендуют использовать String.Empty

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам