|
|
|
Двухмерный массив
|
|||
|---|---|---|---|
|
#18+
я новичок поэтому наверное очень глупый вопрос. Есть файл текстовый из 5 строк и 22 полей разделенных ";" Я открываю его и читаю построчно в цикле Line Input #1, TextLine потом я записываю каждую строку в массив Param = Split(texLine, ";") (выше декларирую переменную Dim Param() As String) так вот я не понимаю что за массив у меня создается? одномерный или двухмерный? Как мне сделать так чтобы каждая новая строка из файла добавлялась бы как новая строка массива? как увидеть что лежит в Param(3,16)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2009, 14:45 |
|
||
|
Двухмерный массив
|
|||
|---|---|---|---|
|
#18+
Если просто считывать каждую строку, то конечно получится одномерный массив из пяти элементов. Чтобы считать данные в двухмерный массив нужно для начала уточнить: каким образом данные записаны в текстовый файл? каждый элемент имеет фиксированное количество символов т.е все поля выровнены относительно левого края или нет? От этого зависит способ считывания данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2009, 15:21 |
|
||
|
Двухмерный массив
|
|||
|---|---|---|---|
|
#18+
Chto s massivom ne tak esli: LBound(Param) =0 UBound(Param) =-1 Esli stroka VOI name;VOI type;Volume [mm³];Dmin [%];Dmax [%];Dmean [%];S.D. [%];Dcrit [%];D10 [%];D90 [%];Dx [%];Dx mm³ [%];Dx mm³ [%];Vcrit [mm³];V100 [mm³];V120 [mm³];V150 [mm³];V200 [mm³];V300 [mm³];Vx [mm³];Vx cGy [mm³];Vx cGy [mm³]; obrabatyvaetsa tak Param = Split(texLine, ";") Ne dolzhno li byt tak: LBound(Param) =0 UBound(Param) =21 kak uvidet' cho v Param? ja pishu MsgBox(Param) no programma rugaetsja ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2009, 15:25 |
|
||
|
Двухмерный массив
|
|||
|---|---|---|---|
|
#18+
mr.haker, Ja ego razbivaju s pomoshju Split ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2009, 15:26 |
|
||
|
Двухмерный массив
|
|||
|---|---|---|---|
|
#18+
mr.haker, Я поняла что создаетя пустой массив :-( как мне все же из моей строки сделать массив содержащий то что находитя между ";"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2009, 15:35 |
|
||
|
Двухмерный массив
|
|||
|---|---|---|---|
|
#18+
Насколько я знаю по своему опыту, функция Split должна использоваться совместно с функцией Join, тогда ошибки не будет. Param = Split(texLine, ";") Param2 = Join(Param, "") msgbox (Param2) Но я не совсем понимаю, для чего ты используешь функцию split. Она просто вырежет из твоей строки все точки с запятой, но никак не разделит данные. Данные в текстовый файл лучше записать в другом виде, если это в твоей компетенции... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2009, 16:35 |
|
||
|
Двухмерный массив
|
|||
|---|---|---|---|
|
#18+
> Автор: mr.haker > Но я не совсем понимаю, для чего ты используешь функцию split. Она просто вырежет из твоей строки все точки с > запятой, но никак не разделит данные. Что значит не разделит? сплит как раз разделяет строку на элементы массива, используя символ разделитель для разделения MSDN Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2009, 16:55 |
|
||
|
Двухмерный массив
|
|||
|---|---|---|---|
|
#18+
Набросал вот такой код, должно работать. По крайней мере у меня всё работает правильно. Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2009, 17:48 |
|
||
|
Двухмерный массив
|
|||
|---|---|---|---|
|
#18+
Теперь считать какой-то конкретный элемент будет просто: Код: plaintext 1. 2. Это код для считывания последнего элемента первой строки. Только всегда учитывай то, что если нужно считать во второй строеке пятый элемент, писать надо MyArray(1, 4), т.е. отнимать единицу от номера элемента строки и от номера элемента столбца. Можно, конечно, сделать и по-другому, чтобы считывать данные, не отнимая единицу, если тебе это нужно, но подскажу как, хотя я думаю тут догадаться будет не сложно. Кстати, тод код, что я до этого привёл будет работать если у тебя 5 строк и в каждой по 22 поля, т.е. всего 5*22 =110 данных, по крайней мере я так понял задачу. P.S. надо было писать не MsgBox(Param) а MsgBox(Param(5)), где число - номер элемента строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2009, 17:59 |
|
||
|
Двухмерный массив
|
|||
|---|---|---|---|
|
#18+
Katerinishe, В. так вот я не понимаю что за массив у меня создается? одномерный или двухмерный? О. Одномерный В. Как мне сделать так чтобы каждая новая строка из файла добавлялась бы как новая строка массива? О. Декларируй двумерный массив. В его каждую новую строку пиши одномерный массив Param как результат работы Split после каждой Line Input #1, TextLine. Не забудь Redim Preserve по ВТОРОМУ индексу двумерного массива на каждой итерации Line Input #1, TextLine и Param = Split(texLine, ";"). Увеличивай второй индекс на один. В. как увидеть что лежит в Param(3,16)? О. Никак. Он у тебя будет одномерный, а не двумерный, поскольку Split возвращает одномерный массив. Если тебе в принципе надо посмотреть содержимое переменной как таковой, воспользуйся функцией Debug.Print или режимом Debug с наведением курсора на переменную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2009, 17:59 |
|
||
|
Двухмерный массив
|
|||
|---|---|---|---|
|
#18+
ещё вариант, если все записи в файле имеют одинаковое кол-во полей Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2009, 12:43 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=36058237&tid=2160811]: |
0ms |
get settings: |
9ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
48ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 328ms |

| 0 / 0 |
