Показать сообщение отдельно
Старый 28.05.2009, 12:21   #12  
petergunn is offline
petergunn
Участник
 
118 / 274 (10) ++++++
Регистрация: 30.08.2005
Адрес: Tyumen
Цитата:
X++:
...
for (varCount = dictMethod.parameterCnt(); varCount >= 1; varCount --)
{
    parmsStr += strFmt("%1 %2, ", dictMethod.parameterType(varCount), dictMethod.parameterName(varCount));
}
Не будет ли отображаемый список параметров метода при таком цикле идти в обратном порядке? или в данном контексте считаем что это не важно?

Добавлю своих 5 копеек для DAX 4.0:
X++:
static void jbTableMethodList(Args _args)
{
    void tableMethodList( TableId _tableId, boolean _isStatic = false )
    {
        DictTable       dictTable = new DictTable( _tableId ) ;
        DictMethod      dictMethod      ;
        
        Counter         methodCount     ;
        Counter         methodIdx       ;
        Counter         varIdx          ;
        
        str             methodNameTxt   ;
        str             varListTxt      ;
        ;

        if( !dictTable )
            return ;

        setPrefix( strfmt( "%1 - %2 methods", dictTable.name(), _isStatic ? 'static' : 'instance' ) ) ;
        methodCount = _isStatic ? dictTable.staticMethodCnt() : dictTable.objectMethodCnt() ;
        for( methodIdx=1; methodIdx<=methodCount; methodIdx++ )
        {
            dictMethod = _isStatic ? dictTable.staticMethodObject( methodIdx ) : dictTable.objectMethodObject( methodIdx ) ;
            methodNameTxt = dictMethod.runMode() == ClassRunMode::Called ? '' : strfmt( "%1 ", dictMethod.runMode() ) ;
            methodNameTxt += strfmt( "%1 %2", extendedTypeId2DisplayName( dictMethod.returnType(), dictMethod.returnId() ), dictMethod.name() ) ;
            
            varListTxt = '' ;
            for( varIdx=1; varIdx<=dictMethod.parameterCnt(); varIdx++ )
            {
                varListTxt += strfmt( "%1 %2%3, ",  extendedTypeId2DisplayName( dictMethod.parameterType( varIdx ), dictMethod.parameterId( varIdx ) ),
                                                    dictMethod.parameterName( varIdx )    ,
                                                    dictMethod.parameterOptional( varIdx ) ? ' (optional)' : '' ) ;
            }
            info( strfmt( "%1(%2)", methodNameTxt, strdel( varListTxt, strlen( varListTxt ), -2 ) ) ) ;
        }
    }
    ;

    info( 'Dict reflection: DictTable & DictMethod' ) ;
    tableMethodList( tableNum( InventTable), false ) ;
    tableMethodList( tableNum( InventTable ), true ) ;
}