как заполнить 2-ух мерный массив постоянными данными?

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

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

demid77
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 14.09.2005 (Ср) 13:18

как заполнить 2-ух мерный массив постоянными данными?

Сообщение demid77 » 30.12.2005 (Пт) 13:22

есть программа в Excel'e на VBA. в ней массивы заполняются постоянными данными из диапазонов листов workbook. массивы там 2-ух видов - есть только с численными данными, а есть с численными и текстовыми. размерность массивов от 2х2, до 100х10. какие есть варианты заполнения массивов в VB.NET ? т.е. это надо из другого файла получать данные или можно в самом VB.NET как-то сделать (по аналогу с Excel)?

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

Сообщение GSerg » 30.12.2005 (Пт) 19:18

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

demid77
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 14.09.2005 (Ср) 13:18

Сообщение demid77 » 10.01.2006 (Вт) 9:29

В программе необходимо использовать массивы, состоящие из постоянных данных. В VBA я это делаю, используя таблицы Excel. т.е.
Код: Выделить всё
MyArray = Workbooks("Book1").Worksheets("Sheet1").Range("ExcelArray").Value

таким образом удобно заполнять массивы размером ~ 100х10. таким же образом можно заполнять и неболшие массивы ~ 2х2. хотя для таких массивов можно использовать функцию Array.
Теперь хочу переделать программу на VB.NET. поэтому хочу знать - как заполнить массив данными в VB.NET?

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

Сообщение GSerg » 10.01.2006 (Вт) 10:06

Фиг поймёшь, что нужно человеку...
Массивы, состоящие из постоянных данных...

Это, что ли?
dim a() as integer = {1,2,3}
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

demid77
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 14.09.2005 (Ср) 13:18

Сообщение demid77 » 10.01.2006 (Вт) 10:17

GSerg писал(а):Фиг поймёшь, что нужно человеку...
Массивы, состоящие из постоянных данных...

Это, что ли?
dim a() as integer = {1,2,3}


ты показал заполнение одномерного массива
1.как заполнить двумерный? причем часть данных числа, а часть - строки.
2. как заполнить одно- и двумерный массив, если там 100 чисел? вручную это делать лень, да и ошибиться можно. эти числа предоставляются в таблицах Excel. поэтому в VBA обращаюсь к соответствующим диапазонам листа Excel.

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

Сообщение GSerg » 10.01.2006 (Вт) 10:40

Ну так и открывай файл экселя и заполняй из него. Поячеечно. Раз с VBA работал, значит знаешь как. Объектную модель никто не менял.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

mdx
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 169
Зарегистрирован: 06.01.2006 (Пт) 18:13
Откуда: I'm from Russia!

Сообщение mdx » 10.01.2006 (Вт) 11:08

Можно ещё из CSV-файла данные читать (там всё просто запятыми разделено). Excel в него экспортировать умеет.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 10.01.2006 (Вт) 12:16

Что человеку надо до сих пор непонятно, но двумерный массив запоняется так:
Код: Выделить всё
Dim ar(,) As Object ={{1,2,3},{"1","2","3"}}
Весь мир матрица, а мы в нем потоки байтов!

demid77
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 14.09.2005 (Ср) 13:18

Сообщение demid77 » 11.01.2006 (Ср) 10:51

mdx писал(а):Можно ещё из CSV-файла данные читать (там всё просто запятыми разделено). Excel в него экспортировать умеет.
подскажи, пожалуйста, как считать данные из файла *.csv в массив в VB.NET.

to GSerg и !Viper!
извините, что плохо объясняю, но я видел, как друг объявляет массив в С++:
Код: Выделить всё
unsigned char CRC16Hi[] = {
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
...и так далее...................................................
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40
} ;


и думал что, может в VB.NET что-то похожее есть.

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

Сообщение GSerg » 11.01.2006 (Ср) 11:03

Не, ну чел, конечно, интересен...
http://bbs.vbstreets.ru/viewtopic.php?p=6577918#6577918 - это, собственно, то, что ты и привёл.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

demid77
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 14.09.2005 (Ср) 13:18

Сообщение demid77 » 11.01.2006 (Ср) 11:06

GSerg писал(а):Не, ну чел, конечно, интересен...
http://bbs.vbstreets.ru/viewtopic.php?p=6577918#6577918 - это, собственно, то, что ты и привёл.
что-то ссылка меня никуда не посылает... приведи, плиз, код или скорректируй ссылку.

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

Сообщение GSerg » 11.01.2006 (Ср) 11:18

Эта ссылка посылает именно туда, куда нужно, а именно на пост !Viper!, прямо предшествующий твоему...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

demid77
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 14.09.2005 (Ср) 13:18

Сообщение demid77 » 11.01.2006 (Ср) 11:24

GSerg , а как считать данные из файла *.txt или *.csv в массив?

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

Сообщение GSerg » 11.01.2006 (Ср) 11:40

В простейшем случае -
Dim s As New IO.FileStream("c:\1.txt", IO.FileMode.Open, IO.FileAccess.Read)
Dim r As New IO.StreamReader(s)
r.ReadToEnd.Split(","c)
r.Close()
s.Close()
с последующим преобразованием строкового массива в числовой через ctype или csng там.

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

demid77
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 14.09.2005 (Ср) 13:18

Сообщение demid77 » 11.01.2006 (Ср) 11:47

GSerg писал(а):А как ты вообще из файлов читаешь?
пока ни как не читаю. но хочу программу с VBA сделать в VB.NET. поэтому узнаю, как это можно сделать попроще.

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

Сообщение GSerg » 11.01.2006 (Ср) 12:30

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

demid77
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 14.09.2005 (Ср) 13:18

Сообщение demid77 » 11.01.2006 (Ср) 12:54

GSerg писал(а):В чём смысл переделывания?
Зачем, то есть?

1.прога была сделана в Excel на VBA, т.к. это было просто и быстро. сам Excel используется для хранения данных, которые используется в программе + применяются некоторые функции Excel - VLookup, HLookup, Match, Round + печать результатов + создание файла Excel с результатами расчета. т.е. ничего особенного от Excel не требуется, поэтому хочу сделать программу без Excel.

2.интересно сделать именно отдельную программу, чтобы как по настоящему: Setup, своё собственноё меню, ярлычок на рабочем столе :) ... вот и подумал, что может переделать прогу на VB6 или VB.NET. кроме того, возможно понадобиться в дальнейшем работать с базой данных в Access.

на самом деле, прогу на VBA ещё до конца не сделал. так, что пока узнаю - можно ли и как это всё переделать на VB.NET.

mdx
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 169
Зарегистрирован: 06.01.2006 (Пт) 18:13
Откуда: I'm from Russia!

Сообщение mdx » 13.01.2006 (Пт) 6:46

При чтении CSV надо поделить строку вначале по символам
CrLf
, а затем каждую получившуюся по
;
.

mdx
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 169
Зарегистрирован: 06.01.2006 (Пт) 18:13
Откуда: I'm from Russia!

Сообщение mdx » 13.01.2006 (Пт) 6:58

Код: Выделить всё
Dim fStream As IO.FileStream = New IO.FileStream("Test.csv", IO.FileMode.Open)
        Dim Reader As IO.StreamReader = New IO.StreamReader(fStream)
        Dim Arr() As String
        Dim Arr2() As String
        Dim Result(,) As String
        Arr = Reader.ReadToEnd.Split(ControlChars.CrLf)
        Reader.Close()
        fStream.Close()
        Dim i As Integer, j As Integer
        For i = 0 To Arr.GetUpperBound(0)
            Arr2 = Arr(i).Split(";"c)
            ReDim Preserve Result(Arr.GetUpperBound(0), Arr2.GetUpperBound(0))
            For j = 0 To Arr2.GetUpperBound(0)
                Result(i, j) = Arr2(j)
                s += Result(i, j) & ControlChars.Tab
            Next
        Next


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

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

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

    TopList  
cron