メンバー名が重複しているかどうかを判定します。
構文
ESS_FUNC_M EssOtlIsMemberNameNonUnique (
hOutline, hMember, fNameNonUnique
);
| パラメータ | データ型 | 説明 |
|---|---|---|
hOutline |
ESS_HOUTLINE_T |
アウトラインのコンテキスト・ハンドル(入力)。 |
hMember |
ESS_HMEMBER_T |
非一意性をクエリーするメンバー(入力)。 |
*fNameNonUnique |
ESS_BOOL_T |
TRUEの場合は、クエリーされたメンバーが重複メンバー名です(出力)。 |
備考
この関数を呼び出す前に、EssOtlOpenOutlineを呼び出して編集モードでアウトラインを開いてください。
この関数の2番目の引数のメンバー・ハンドルを取得するには、メンバー走査関数を使用します。
この関数はメンバー名が重複しているかどうかを確認します。メンバー名が重複している場合には、使用プログラム内で別の関数が固有でない名前を使用して重複しているメンバー名を参照したときに、予期しない動作が起こる可能性があるため、メンバーの完全修飾名(そのメンバーの一意名またはキー)の取得が必要な場合もあります。
ただし、すべての名前が一意である場合には、完全修飾の名前やキーを使用するためのリソースを消費する必要はありません。
この関数を使用してからメンバー名が重複していることが判明した場合には、EssOtlGetMemberUniqueNameを使用して、完全修飾名を取得してその名前を指定場所に保存できます。
戻り値
正常終了の場合は0が戻され、それ以外はエラーが戻されます。
例
ESS_FUNC_M ESS_ISUniqMemberName()
{
ESS_STS_T sts = 0;
ESS_HOUTLINE_T hOutline;
ESS_OBJDEF_T Object;
ESS_APPNAME_T szAppName;
ESS_DBNAME_T szDbName;
ESS_OBJNAME_T szFileName;
ESS_HMEMBER_T hMemberParent, hMemberChild;
ESS_BOOL_T pbNameUnique;
memset(&Object, '\0', sizeof(Object));
Object.hCtx = hCtx;
Object.ObjType = ESS_OBJTYPE_OUTLINE;
strcpy(szAppName, "Demo");
strcpy(szDbName, "Test");
strcpy(szFileName, "Test");
Object.AppName = szAppName;
Object.DbName = szDbName;
Object.FileName = szFileName;
sts = EssOtlOpenOutline(hCtx, &Object, ESS_FALSE,
ESS_TRUE, &hOutline);
if (!sts)
{
sts = EssOtlFindMember(hOutline, "2004", &hMemberParent);
}
if (!sts && hMemberParent)
{
sts = EssOtlGetChild(hOutline, hMemberParent, &hMemberChild);
}
if (!sts)
{
//Check whether Qtr1 is unique member name, returns 0 if unique and 1 if non-unique
sts = EssOtlIsMemberNameNonUnique (hOutline, hMemberChild, &pbNameUnique);
if (sts)
printf("EssOtlIsMemberNameNonUnique failed sts %ld\n",sts);
}
return sts;
}
関連トピック