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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.11.2005, 16:25   #8  
SolNik is offline
SolNik
Участник
 
58 / 36 (2) +++
Регистрация: 22.10.2003
Всем спасибо, но времени разбираться с недокументированными классами не было, а типы структур данных уже известны - решил сам набросать метод посчитывающий занимаемую память. Считает для::Container, Date, Integer, Real, String, Array, Struct, Map. Для остальных типов возвратит 0.
PHP код:
static int getMemSizeOfItem(anyType _item)
{
    
int         i;
    
int         result;
    Array       
arr;
    
Struct      struct;
    
Map         map;
    
MapIterator mi;
    ;

    switch (
typeOf(_item))
    {
        case 
types::Container :
            
result 0;
            for (
i=1i<=conLen(_item); i++)
            {
                
result+=RTRTimeAccountProcess::getMemSizeOfItem(conPeek(_itemi));
            }
        break;

        case 
types::Date result 4;
        break;

        case 
types::Integer result 4;
        break;

        case 
types::Real result 8;
        break;

        case 
types::String result strLen(_item);
        break;

        case 
types::Class :
            switch (
classIdGet(_item))
            {
                case 
classNum(Array) :
                    
arr _item;
                    for (
i=1i<=arr.lastIndex(); i++)
                    {
                        
result+=RTRTimeAccountProcess::getMemSizeOfItem(arr.value(i));
                    }
                break;

                case 
classNum(Struct) :
                    
struct _item;
                    for (
i=1i<=struct.fields(); i++)
                    {
                        
result+=RTRTimeAccountProcess::getMemSizeOfItem(struct.valueIndex(i));
                    }
                break;

                case 
classNum(Map) :
                    
map _item;
                    
mi  = new MapIterator(map);
                    while (
mi.more())
                    {
                        
result+=RTRTimeAccountProcess::getMemSizeOfItem(mi.key());
                        
result+=RTRTimeAccountProcess::getMemSizeOfItem(mi.value());
                        
mi.next();
                    }
                break;
            }
        break;
    }

    return 
result;


 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Размер буфера MironovI DAX: Администрирование 5 20.03.2009 11:52
Использование памяти клиентского ПК falcon65 DAX: Администрирование 0 07.11.2007 11:49
Как сохранять размер связанных форм? BlueRose DAX: Программирование 2 15.06.2006 17:06
Неудобство использования аналитик "Цвет" и "Размер" clerk DAX: Функционал 17 23.05.2005 13:08
В памяти остается COM (Excell) bucken DAX: Программирование 3 19.12.2003 18:08

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

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

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