AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.10.2008, 14:54   #1  
chanchala is offline
chanchala
Участник
Аватар для chanchala
 
113 / 10 (1) +
Регистрация: 14.05.2008
Адрес: СПб
? двумерный динамический массив
Добрый день, уважаемые посетители форума
Подскажите, пожалуйста, какими способами можно реализовать двумерный динамический массив на X++.
__________________
AX 3.0, Build #9.3
Старый 30.10.2008, 15:13   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Посмотрите в любую книгу по программированию на Х++, везде приводятся примеры.
Если кратко - представить двумерный массив через одномерный с помощью игр с индексами.

Многие написали, думаю, обертки для этог - обычный класс.
Может кто выложит сюда
Старый 30.10.2008, 15:14   #3  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Книга Еременко, Шашкова - стр.76
Старый 30.10.2008, 15:14   #4  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от chanchala Посмотреть сообщение
Добрый день, уважаемые посетители форума
Подскажите, пожалуйста, какими способами можно реализовать двумерный динамический массив на X++.
Организовать одномерный, размерностью M*N и обращаться к его элементам так:
X++:
arr[y*N+x+1]
где x[0..M-1], у[0..N-1]
Старый 30.10.2008, 15:17   #5  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Я так понимаю ключевое слово в этом вопросе было "динамический"
__________________
Zhirenkov Vitaly
Старый 30.10.2008, 15:18   #6  
NNB is offline
NNB
Участник
 
103 / 12 (1) ++
Регистрация: 31.08.2006
Class Array
Старый 30.10.2008, 15:18   #7  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Встроенный массив а Аксапте - динамический, его размер можно не указывать при его определении и он может меняться во время выполнения. По-моему, это и есть определение динамического массива
Старый 30.10.2008, 15:23   #8  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Встроенный массив а Аксапте - динамический, его размер можно не указывать при его определении и он может меняться во время выполнения. По-моему, это и есть определение динамического массива
НУ может я что-то недопонял, но если вы определяете массив как пишется в книжках и обращаетесь arr[y*N+x+1] (как в примере выше), то у вас уже забито, что размерность массива N*M. Если вы вдруг заходите чтоб этот массив стал (N+2)*(M+4), то вам придётся перестраивать весь массив. Или я не прав?

chanchala Вы это имели ввиду в вопросе?
__________________
Zhirenkov Vitaly
Старый 30.10.2008, 15:25   #9  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
Ну т.е. понятно что как вариант можно взять с большим запасом, если ресурсов не жалко, но вряд ли это выход
__________________
Zhirenkov Vitaly
Старый 30.10.2008, 15:27   #10  
chanchala is offline
chanchala
Участник
Аватар для chanchala
 
113 / 10 (1) +
Регистрация: 14.05.2008
Адрес: СПб
Ага, спасибочки. Если правильно поняла: "Чтобы было удобно, написать свой класс"
__________________
AX 3.0, Build #9.3
Старый 30.10.2008, 15:34   #12  
chanchala is offline
chanchala
Участник
Аватар для chanchala
 
113 / 10 (1) +
Регистрация: 14.05.2008
Адрес: СПб
Цитата:
Сообщение от ZVV Посмотреть сообщение
НУ может я что-то недопонял, но если вы определяете массив как пишется в книжках и обращаетесь arr[y*N+x+1] (как в примере выше), то у вас уже забито, что размерность массива N*M. Если вы вдруг заходите чтоб этот массив стал (N+2)*(M+4), то вам придётся перестраивать весь массив. Или я не прав?

chanchala Вы это имели ввиду в вопросе?
Вы правильно поняли. К сожалению, N и M не только заранее не известны, но и могут меняться уже после того, как станут известны с последующим удалением соответствующих "строк" и "столбцов". Думала отмазаться чем-нибудь почти готовым, но, похоже не получится
__________________
AX 3.0, Build #9.3
Старый 30.10.2008, 15:38   #13  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от chanchala Посмотреть сообщение
Вы правильно поняли. К сожалению, N и M не только заранее не известны, но и могут меняться уже после того, как станут известны с последующим удалением соответствующих "строк" и "столбцов". Думала отмазаться чем-нибудь почти готовым, но, похоже не получится
Ну вот raz выложил отличную ссылку - там всё это уже оказывается проходили.
Можете почерпнуть многое оттуда....
__________________
Zhirenkov Vitaly
Старый 30.10.2008, 15:40   #14  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от chanchala Посмотреть сообщение
Вы правильно поняли. К сожалению, N и M не только заранее не известны, но и могут меняться уже после того, как станут известны с последующим удалением соответствующих "строк" и "столбцов". Думала отмазаться чем-нибудь почти готовым, но, похоже не получится
Кстати, один принципиальный момент:
если как вы говорите
Цитата:
но и могут меняться уже после того, как станут известны с последующим удалением соответствующих "строк" и "столбцов".
, т.е. если может быть только удаление, но не добавление, то вы вполне спокойно можете обойтись стандартным одномерным массивом, как указывалось выше!
Проблемы то возникнут только при добавлении, причём именно столбцов.
__________________
Zhirenkov Vitaly
Старый 31.10.2008, 17:07   #15  
Hyper is offline
Hyper
Участник
Соотечественники
 
163 / 29 (1) +++
Регистрация: 09.10.2003
Цитата:
Сообщение от ZVV Посмотреть сообщение
Кстати, один принципиальный момент:
если как вы говорите , т.е. если может быть только удаление, но не добавление, то вы вполне спокойно можете обойтись стандартным одномерным массивом, как указывалось выше!
Проблемы то возникнут только при добавлении, причём именно столбцов.
Может я не до конца понял идею, но при удалении проблемы также возникнут. Скажем, если в массиве 10x10 убрать все четные столбцы и нечетные строки, размерность массива должна стать 5x5. Каким образом корректно доступаться к данным без перестраивания массива?
Старый 31.10.2008, 17:18   #16  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от Hyper Посмотреть сообщение
Может я не до конца понял идею, но при удалении проблемы также возникнут. Скажем, если в массиве 10x10 убрать все четные столбцы и нечетные строки, размерность массива должна стать 5x5. Каким образом корректно доступаться к данным без перестраивания массива?
Подразумевалось, что сам массив останется того же самого размера, просто обращаться к нему по меньшему числу "индексов", если можно так выразиться.

Если строки или столбцы будут удаляться только с конца, то проблем вообще никаких. Если же, как в вашем варианте, из середины, тогда некоторые проблемы конечно будут, а именно придётся как-то дополнительно хранить "живые" индексы (ну или "неживые"). Но это тоже несложно реализуемый технический вопрос.

Вот что я имел ввиду...
__________________
Zhirenkov Vitaly
Старый 31.10.2008, 17:20   #17  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
т.е. в формуле
Цитата:
arr[y*N+x+1]
N - останется тем, что было определно в самом начале и менятся не будет, а диапазон индексов y & x будет каким-то образом "кастрирован".
__________________
Zhirenkov Vitaly
Старый 31.10.2008, 17:29   #18  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
С такими матричными задачками - надо в Excel, в клеточки! Ну или в Spreadsheet. И там удаляй - не хочу, добавляй - не хочу, транспонируй как хочется. Подумать не успеешь - как всё само перестроится.
Старый 31.10.2008, 17:42   #19  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от Gustav Посмотреть сообщение
С такими матричными задачками - надо в Excel, в клеточки! Ну или в Spreadsheet. И там удаляй - не хочу, добавляй - не хочу, транспонируй как хочется. Подумать не успеешь - как всё само перестроится.
Ага, тока жалко в исходной задаче
Цитата:
Сообщение от chanchala Посмотреть сообщение
... какими способами можно реализовать двумерный динамический массив на X++.
стоит явное ограничение. ))
__________________
Zhirenkov Vitaly
Старый 31.10.2008, 17:58   #20  
ivas is offline
ivas
Участник
Аватар для ivas
 
252 / 68 (3) ++++
Регистрация: 22.12.2005
Цитата:
Сообщение от chanchala Посмотреть сообщение
Добрый день, уважаемые посетители форума
Подскажите, пожалуйста, какими способами можно реализовать двумерный динамический массив на X++.
не ломайте себе моск, используйте мап
X++:
    Map m = new Map(Types::Container, Types::Anytype)
    ;

    m.insert([i,j], _value)
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy
За это сообщение автора поблагодарили: Gustav (2).
Теги
array, массив

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вписать динамический отчет в страницу (DAX 4.0) Qaz Qwerty DAX: Программирование 2 17.07.2008 05:46
Передать из внешнего приложения массив в метод murad DAX: Программирование 3 21.06.2006 12:35
Как правильно удалить динамический массив контейнеров ?! woland666 DAX: Программирование 2 09.06.2005 12:44
Как вывести массив элементов в отчёт? Yuri Safronov DAX: Программирование 1 22.11.2002 17:14
Как в параметрах подпрограммы передать массив элементов. Yuri Safronov DAX: Программирование 3 14.10.2002 16:35

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:37.