ReDim Preserve и заполнение массива

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

ReDim Preserve и заполнение массива

Сообщение 1Steps » 19.04.2007 (Чт) 3:22

Начал с ВБ-6.
Начитался на Вашем форуме, что если начинаешь учиться, то начинать нужно с ВБ.нет!

Нижеприведённый код работает хорошо, но меня вопрос:
1) Можно ли так менять размерность массива?
2) Можно ли так заполнять массив?

Код: Выделить всё
Dim arrSelfNumber() As Integer
    Dim x As Integer = -1

    Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click,  Button2.Click, Button3.Click, Button4.Click, Button5.Click, Button6.Click, Button7.Click, Button8.Click,
Button9.Click
        x += 1
        ReDim Preserve arrSelfNumber(x)
        arrSelfNumber(x) = CInt(sender.Text()) '(CInt(sender.Text()) - 1)
        With sender
            .Enabled = False
            .backcolor = Color.LightGray
        End With

    End Sub


3) Почему подчеркнут Result после знака "=" зелёной волнистой линией?

Код: Выделить всё
Private Sub Sortirovka()
        Dim a 'as What?
        Dim Result As String
        Array.Sort(arrSelfNumber)
        For Each a In arrSelfNumber
            Result = Result & a
            MessageBox.Show(Result)
        Next
    End Sub


Заранее благодарен.

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 19.04.2007 (Чт) 6:52

1) можно
2) более правильно оформить процедуру Button_Click наверно было бы так:
Код: Выделить всё

        Dim tmpInt As Integer
        Dim Btn As Button = CType(sender, Button)

        If Integer.TryParse(Btn.Text, tmpInt) Then
            x += 1
            ReDim Preserve arrSelfNumber(x)
            arrSelfNumber(x) = tmpInt
        Else
            'Error
        End If

        With Btn
            .Enabled = False
            .BackColor = Color.LightGray
        End With

3)Dim Result As String = "" - обьявляй с инициализацией
(подчеркивает зеленым потому что переменная Result используется неинициализированной и можешь получить исключение)
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

Сообщение 1Steps » 19.04.2007 (Чт) 14:41

Nord777

Спасибо.
Скажите, эта строчка отлавлмвает только кнопки которые можно привести к Integer? Ведь на форме много других кнопок.
Код: Выделить всё
If Integer.TryParse(Btn.Text, tmpInt)

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 19.04.2007 (Чт) 21:03

Нет, эта строка ничего не отлавливает. Это попытка преобразования строки в Integer. Если функция возвращает True, то в переменной tmpInt содержится результат преобразования, если False - значит преобразование не удалось.
...Ведь на форме много других кнопок

мне казалось что это:
Код: Выделить всё
Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click,  Button2.Click, Button3.Click, Button4.Click, Button5.Click, Button6.Click, Button7.Click, Button8.Click,
Button9.Click

как раз и есть отбор только нужных кнопок
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

Сообщение 1Steps » 19.04.2007 (Чт) 23:04

Да, я понял.

Огромное Вам Спасибо за подсказку.


Вернуться в Visual Basic .NET

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

Сейчас этот форум просматривают: Mail.ru [бот] и гости: 28

    TopList