Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
2 / 2 / 0
Регистрация: 20.06.2011
Сообщений: 143
1

Работа с массивом не определенного размера ReDim Preserve

19.11.2011, 22:26. Показов 4032. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
1. создается массив не определенного размера
2.по мере считывания строк из файла массив заполняется меняя размерность(работает нормально)
3.в текстовое поле вводится строка и надо перед записью в файл проверить нет ли ее уже в массиве,
но показывает что массив пуст

VB.NET
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
36
37
38
39
40
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
        'выводит список в листбокс не перебирая по строкам, а весь сразу 
        If IO.File.Exists(fName) Then
            ListBox1.Items.AddRange(IO.File.ReadAllLines(fName, System.Text.Encoding.Default))
        End If
 
        Dim ww As Integer = 0  'используется для нумерации массива
        'забивка массива данными из файла для временного хранения
        Dim MasStrok() As String
        For Each test As String In File.ReadAllLines("D:\Test.txt")
            ReDim Preserve MasStrok(ww)
            MasStrok(ww) = (test)
            ww = ww + 1
            'MsgBox(test)  'использовал для проверки
        Next
 
        ww = 0
        ListBox1.Sorted = True
    End Sub
 
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 
        
        Dim aaa As String = TextBox1.Text & TextBox2.Text
        For Each aaa As String In MasStrok(10)  -----------------"в этой строчке указывает 
                                                    "В экземпляре объекта не задана ссылка на объек"
                                                      и массив оказывается пустым"
            
          If ToString() = MasStrok(ww) Then
                ww = ww + 1
                MsgBox("Запись уже имеется", MsgBoxStyle.Exclamation)
                Exit Sub
            Else
                ListBox1.Items.Add(struct.ToString)
                My.Computer.FileSystem.WriteAllText(fName, struct.ToString & vbCrLf, True)
                TextBox1.Clear() : TextBox2.Clear()
                ListBox1.Items.Clear()
            End If
        Next
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2011, 22:26
Ответы с готовыми решениями:

Redim Preserve не работает
Если есть "Preserve" - то сразу ошибка - "Subscript out of range" в строке Redym Preserve. Без...

Массив Собственного Типа И Redim Preserve
Всем привет! Описан тип: Type myt p1 As String p2 As String End Type Объявлен массив:

Как использовать ReDim Preserve для двумерного массива
Создали, например, mArr(n, 4). При определенном условии в ячейке первого столбца, нужно загнать в...

Как в С# реализовать VB'шный оператор: ReDim Preserve buf(N)
1. У объекта Obj есть метод со следующей сигнатурой: Method(ref System.Array b) Мне надо...

2
Почетный модератор
21415 / 9150 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
19.11.2011, 22:54 2
Moerte, ну, если мельком глянуть:
Не вижу глобального объявления массива

потом с ww какие-то вещи непонятные, много телодвижений, и редим как-то мне не нравится в данном случае (при первой итерации массив не расширяется?)

Выход:
Объявить в классе формы этот массив.
Заполнить его при загрузке строками из файла:
VB.NET
1
MasStrok = File.ReadAllLines("D:\Test.txt")
И далее работать с массивом:
VB.NET
1
ListBox1.Items.AddRange(MasStrok)
1
755 / 554 / 48
Регистрация: 17.06.2010
Сообщений: 1,041
Записей в блоге: 1
20.11.2011, 17:31 3
Moerte, Ко всему добавлю:
Посмотри хорошие классы: ArrayList, List
У них есть методы .Add. Никаких проблем с изменением размерности.
0
20.11.2011, 17:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.11.2011, 17:31
Помогаю со студенческими работами здесь

Работа с массивом строк. Подсчет строк определенного содержания
Сейчас выглядит это так: listBox2.Items.Clear(); listBox1.Items.Clear(); ...

Расчёт определённого интеграла с массивом данных
Здравствуйте, имеется код для расчёта определённого интеграла с массивом данных сам интеграл Х^5...

Форма определенного размера
Создал например я форму. Когда я запускаю его на мониторе меньшего размера и разрешения он...

Пример работы с массивом большого размера
Помогите решить задачу Turbo Pascal Пример работы с массивом большого размера. Массив заменяется...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru