Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> разветвленный Array, разветвленный Array 
V
    Опции темы
popzow
Дата 10.5.2008, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 21.11.2006

Репутация: нет
Всего: нет



Я бы хотел бы в конроле поставить разветленный аrray типа:
Код

Public Class Control
  Public row()() As Integer = New Integer()() {}
End Class

А потом устанавливать значения, уже на форме:
Код

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       Control1.row(1) = New Integer() {40, 60, 30, 70}
        Control1.row(2) = New Integer() {77, 87, 55, 78}
        Control1.row(3) = New Integer() {40, 61, 30, 70}
End Sub

Выдает ошибку.
мол нужно так:
Код

 Dim row()() As Integer = New Integer(99)() {}

А если я не знаю сколько елементов будет то что делать подскажите кто нибудь?
PM MAIL   Вверх
-Mikle-
Дата 10.5.2008, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 3
Всего: 59



Ты забыл инициализировать первый уровень
Код

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Control1.row = New Integer(3)();

        Control1.row(1) = New Integer() {40, 60, 30, 70}
        Control1.row(2) = New Integer() {77, 87, 55, 78}
        Control1.row(3) = New Integer() {40, 61, 30, 70}
End Sub



--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
popzow
Дата 11.5.2008, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 21.11.2006

Репутация: нет
Всего: нет



Спасибо за ответ, но как быть если я не знаю сколько будет в первом уровне? тоесть оно заранее не известноо. там может быть 3 а может быть и 30.
PM MAIL   Вверх
popzow
Дата 11.5.2008, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 21.11.2006

Репутация: нет
Всего: нет



Всем спасибо, я нашел, что искал.
Код

        Dim Row As Integer()()
        ReDim Row(0)
        Row(0) = New Integer() {1, 2}

PM MAIL   Вверх
-Mikle-
Дата 11.5.2008, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 3
Всего: 59



Вообще для таких случаев придуманы коллекции. Без проблем можешь использовать их для своих целей. Посмотри в System.Collections и в System.Collections.Generic


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
popzow
Дата 12.5.2008, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 21.11.2006

Репутация: нет
Всего: нет



Конечно спасибо. Вы имели ввиду АrrayList.
Код

        Dim Row As ArrayList()() = New ArrayList()() {}

Немогли бы вы мне дать пример заполнения, примерного типа- Row(0) имеет значения {8,9,5} а Row(3) имеет значения {44,22} .
PM MAIL   Вверх
-Mikle-
Дата 12.5.2008, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 3
Всего: 59



Цитата(popzow @  12.5.2008,  13:57 Найти цитируемый пост)
а Row(3) имеет значения {44,22}

Для того чтоб Row(3) имел значение, нужно чтобы сам Row(3) был в коллекции.

Если с ArrayList то так:

Код

    Private Sub testArrayListWithIntArrayAsItem()
        Dim Rows As ArrayList = New ArrayList
        Rows.Add(New Integer() {8, 9, 5}) '0 строка
        Rows.Add(New Integer())           '1 строка
        Rows.Add(New Integer())           '2 строка
        Rows.Add(New Integer() {44, 22})  '3 строка
        '.........
        Rows(0)(0) = 1
        Rows(1) = New Integer() {7, 1, 34, 3}
    End Sub


возможно, тебе будет интересен такой вариант:

Код

    ' список списков целых чисел
    Private Sub testListOfListOfInteger()
        Dim Rows As List(Of List(Of Integer)) = New List(Of List(Of Integer))

        ' инициализируем строки
        Rows.Add(New List(Of Integer)) ' добавляем строку 0
        Rows.Add(New List(Of Integer)) ' добавляем строку 1
        Rows.Add(New List(Of Integer)) ' добавляем строку 2
        Rows.Add(New List(Of Integer)) ' добавляем строку 3

        Rows(0).Add(8)
        Rows(0).Add(9)
        Rows(0).Add(5)

        Rows(3).Add(44)
        Rows(3).Add(77)

        Dim val As Integer
        val = Rows(0)(1) ' в val будет 9
        val = Rows(3)(0) ' в val будет 44
        val = Rows(1)(0) ' ошибка, потому что в строке 1 нет элемента с индексом 0
    End Sub


Вообще мне немного не понятна задача, у тебя количество колонок в каждой строке может быть разным? Если да, то мне кажется, что нарушается структура данных. Опиши вкратце, для хранения каких данных тебе нужен двумерный список? Возможно есть другое решение... Если хочешь, конечно...


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
popzow
Дата 12.5.2008, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 21.11.2006

Репутация: нет
Всего: нет



Я сам программирую как хобби, сначало была идея ввода таблицы в rtf, что достаточно легко получилося, но при этом таблица после ввода не может изменена по ширине столбцов. поэтому я подумал что ширину столбцов передать как например массив- означает- row(0) строка 0 имеет значения:{22,44,55} тесть 3 столбца по 22, 33 и 55 пикселя. а row(1) может иметь другое кол-во столбцов и другую ширину столбцов. для этого нужен был массив массивов. Но я как то отказался от этой идеи, потому что нужна в любом случае нужна инитиализация строк. А если при выборе (А я хочу диалог создать для введения таблиц) я сначчало выберу row(0) интиализирую до него, а потом выберу row(1) и при новой интиализации все перепишеться, вообщем я в сомнениях по поводу правильности концепта. Тоесть это должна была быть функция где бы ползователь мог создать свой стиль таблицы с учетом ширины колонок и кол-во стобцов. например всегда в 0 строке должно быть 3 столбца с шириной{22,44,55}. 
p.s:наверное понедельник сказываеться. 
Зато узнал об возможностях массивов.

PM MAIL   Вверх
-Mikle-
Дата 12.5.2008, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 3
Всего: 59



Цитата(popzow @  12.5.2008,  19:54 Найти цитируемый пост)
вообщем я в сомнениях по поводу правильности концепта


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

отмечаю вопрос как решенный


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0804 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.