文字列タイプの属性情報のためにEssGetAttributeInfoおよびEssGetMemberInfoによって動的に割り当てられたメモリーを解放します。
構文
パラメータ | データ型 | 説明 |
---|---|---|
hInst; |
ESS_HINST_T |
構造体を割り当てるためにEssGetAttributeInfoまたはEssGetMemberInfoを呼び出したプロセスのインスタンス・ハンドル。 |
structId; |
ESS_ULONG_T |
構造体に対する次の定数識別子のいずれかになります:
|
count; |
ESS_ULONG_T |
構造体の数。 |
structPtr; |
ESS_PVOID_T |
メモリーへのポインタ。 |
備考
ローカル・ルーチンを離れる前に、必ずこの関数を呼び出して、EssGetAttributeInfoまたはEssGetMemberInfoによって割り当てられた構造体を解放してください。
アクセス
この関数を使用するのに、特別な権限は必要ありません。
例
void ESS_GetAttributeSpecifications() { ESS_STS_T sts = ESS_STS_NOERR; ESS_PATTRSPECS_T pAttrSpecs; sts = EssGetAttributeSpecifications(hCtx, &pAttrSpecs); printf("\n ---------Attribute Specifications--------\n\n"); if (sts) return(sts); switch(pAttrSpecs->usGenNameBy) { case ESS_GENNAMEBY_PREFIX: printf("\n Prefix/Suffix : Prefix"); break; case ESS_GENNAMEBY_SUFFIX: printf("\n Prefix/Suffix : Suffix"); break; default: printf("\n Prefix/Suffix : None"); break; } switch(pAttrSpecs->usUseNameOf) { case ESS_USENAMEOF_PARENT: printf("\n Use Name of : Parent"); break; case ESS_USENAMEOF_GRANDPARENTANDPARENT: printf("\n Use Name of : Grand Parent and Parent"); break; case ESS_USENAMEOF_ALLANCESTORS: printf("\n Use Name of : All Ancestors"); break; case ESS_USENAMEOF_DIMENSION: printf("\n Use Name of : Dimension"); break; case ESS_USENAMEOF_NONE: printf("\n Use Name of : None"); break; default: printf("\n Use Name of : Invalid setting"); break; } switch(pAttrSpecs->cDelimiter) { case ESS_DELIMITER_PIPE: printf("\n Delimiter : '|'"); break; case ESS_DELIMITER_UNDERSCORE: printf("\n Delimiter : '_'"); break; case ESS_DELIMITER_CARET: printf("\n Delimiter : '^'"); break; default: printf("\n Delimiter : Invalid setting"); break; } switch(pAttrSpecs->usDateFormat) { case ESS_DATEFORMAT_DDMMYYYY : printf("\n Date Format : DD-MM-YYYY"); break; case ESS_DATEFORMAT_MMDDYYYY : printf("\n Date Format : MM-DD-YYYY"); break; default: printf("\n Date Format : Invalid setting"); break; } switch(pAttrSpecs->usBucketingType) { case ESS_UPPERBOUNDINCLUSIVE : printf("\n Bucketing Type : Upper Bound inclusive"); break; case ESS_UPPERBOUNDNONINCLUSIVE : printf("\n Bucketing Type : Upper Bound non-inclusive"); break; case ESS_LOWERBOUNDINCLUSIVE : printf("\n Bucketing Type : Lower Bound inclusive"); break; case ESS_LOWERBOUNDNONINCLUSIVE : printf("\n Bucketing Type : Lower Bound non-inclusive"); break; default: printf("\n Bucketing Type : Invalid setting"); break; } printf("\n Default for TRUE : %s",pAttrSpecs->pszDefaultTrueString); printf("\n Default for FALSE : %s",pAttrSpecs->pszDefaultFalseString); printf("\n Default for Attr Calc : %s",pAttrSpecs->pszDefaultAttrCalcDimName); printf("\n Default for Sum : %s",pAttrSpecs->pszDefaultSumMbrName); printf("\n Default for Count : %s",pAttrSpecs->pszDefaultCountMbrName); printf("\n Default for Average : %s",pAttrSpecs->pszDefaultAverageMbrName); printf("\n Default for Min : %s",pAttrSpecs->pszDefaultMinMbrName); printf("\n Default for Max : %s",pAttrSpecs->pszDefaultMaxMbrName); printf("\n"); EssFreeStructure(hInst, ESS_DT_STRUCT_ATTRSPECS, 1,(ESS_PVOID_T)pAttrSpecs); }
関連トピック