Двухмерный массив

  • Автор темы Автор темы MMN
  • Дата начала Дата начала
M

MMN

основывапясь на хелпе пытаюсь создать двухмерный массив.
если брать пример, то это выглядит так

Option Base 1
' Declare a two-dimensional dynamic array, of Variant type.
ReDim markMar(2, 2)
' Assign a value to each element.
markMar(1, 1) = 1
markMar(2, 1) = 2
markMar(1, 2) = 3
markMar(2, 2) = 4
' Change the upper bound of the last dimension of markMar
' from 2 to 3, preserving the values already stored in
' existing elements of markMar.
ReDim Preserve markMar(2,3)
' Assign values to the additional elements of markMar.
markMar(1, 3) = 5
markMar(2, 3) = 6


здесь наращивают второй элемент массива.
если я пытаюсь нарастить первый, то вылетаем в ошибку.
как всетаки правильно нарастить первый элемент ??
 
здесь скорее не наращивают второй элемент.. а переопределяют массив в целом
раньше массив был 2х2 стал 2х3
 
если я пытаюсь нарастить первый, то вылетаем в ошибку.
А каким кодом пытаетесь нарастить первое измерение? Если объявить массив при помощи
Код:
Dim mArr As Variant
то потом можно будет наращивать при необходимости любое из измерений ;)
А в хелпе масиив объявлен явным образом - с изначальным заданием размерности, поэтому и позволяет менять только последнее измерение
 
amigolinx
Где массив задан явным образом???

автор, код в студию! чего ты там пишешь?
 
NickProstoNick Может наспех некорректно выразился, я имел в виду что при конструкции типа ReDim markMar(2, 2) массиву задаются четкие границы и можно будет наращивать только последнее измерение (о чем кстати в том же хелпе и сказано)
 
ничего сверх гениального. хотел написать функцию по добавлению в двух мерный массив элементов.

здесь скорее не наращивают второй элемент.. а переопределяют массив в целом
раньше массив был 2х2 стал 2х3
хотел наращивать массив
2х2
3х2
4х2
5х2
 
ничего сверх гениального. хотел написать функцию по добавлению в двух мерный массив элементов.


хотел наращивать массив
2х2
3х2
4х2
5х2

Так в хелпе же сказано - можно менять только границу последнего измерения, т.е
2х2
2х3
2х4
2х5
 
MMN
Хм, прикол, однако... Я уж было чертечто подумал ;) А почему тогда наоборот не подходит наращивать по хелповскому? А там уж дальше читаем нужные элементы с нужных измерений...
 
можно... только ты потеряешь все данные массива
из этого выражения ReDim Preserve markMar(5,2) убери Preserve - получишь массив 5х2, но тогда все элементы обнулятся
Тут уже действительно получится переопределение массива... и переопределять можно любую границу
 
можно... только ты потеряешь все данные массива
из этого выражения ReDim Preserve markMar(5,2) убери Preserve - получишь массив 5х2, но тогда все элементы обнулятся
это я уже пробывал ))



Хм, прикол, однако... Я уж было чертечто подумал А почему тогда наоборот не подходит наращивать по хелповскому? А там уж дальше читаем нужные элементы с нужных измерений...
наверно так и поступлю, хотя мне кажеться, то это коряво выглядит
 
как по мне через класс было бы на порядок менее геморойно
 
вместо двумерного массива можно использовать список массивов. Т.е.

Dim yourArray List as Variant
Dim mass(1 to 2) as String

И дальше в цикле по i:

mass(1) = "aaaa"
mass(2) = "zzzz"
yourArray(cstr(i)) = mass

А вообще, лучше сразу вместо массива использовать классы, и вместо mass(i) использовать нормальные проперти объектов.
 
MMN
простой пример

Код:
Class ClassAgent ' Инфа по агенту
Public Name As String
Public Alias As String
Public Comment As String
Public IsEnabled As Boolean
Public LastRun As Variant

Sub GetInfoFromAgent(Agent As Variant) ' Берем всю инфу из агента
Me.Name = Agent.Name
Me.Alias = Me.Name
If Instr(Me.Alias, "|")>0 Then Me.Alias = Strright(Me.Alias, "|")
Me.Comment = Agent.Comment
Me.IsEnabled = Agent.IsEnabled
Me.LastRun = Agent.LastRun
End Sub
End Class

Class MasClassAgent ' Массив агентов
Public Count As Integer
Public Rec() As ClassAgent

Sub New
Count = -1
End Sub


.......
End Class
 
за достаточно долгую программистскую практику, использовал многомерные массивы только в "начале пути"
оправдано в математике, но в реальной жизни, редко сталкиваешься с необходимостью многомерных массивов
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы