Nintendo MessageStudio ヘルプ

LMS_GetTextIndexByLabel

この関数は、テキストのラベルからそれに対応するテキストのインデックス番号を検索する処理です。 テキストのラベルとはメッセージファイルに設定することができるテキストの識別子のことです。

テキストラベルの対応情報は、メッセージリソースファイル中にある「LBL1ブロック」と呼ばれる区画に格納されます。 フォーマットに関する詳しい説明は、メッセージバイナリフォーマットの項をご覧ください。

構文

libms_s32_t LMS_GetTextIndexByLabel( LMSMsgFile *pFile, const char* pLabel );

引数

引数名意味
pFileLMSMsgFile*インデックス番号を検索する対象のメッセージファイルオブジェクトを指定してください(LMS_InitMessage関数で返ってきた値)。
pLabelconst char*検索したいラベル文字列へのポインタを指定してください。NULL終端のASCII文字列である必要があります。

戻り値

テキストのインデックス番号が返ります。このテキストのインデックス番号はメッセージファイルリソースの中でテキスト情報を格納する「TXT1ブロック」の中の格納番号になります。このインデックス番号を利用してテキスト情報を取得することができます。

注意事項

この関数を利用する場合、データの出力設定で「テキストラベルの対応情報ブロック(LBL1)を埋め込む」にチェックを入れておく必要があります(規定値は出力する設定になっています)。

参考

ラベル情報はハッシュ値としてファイルに書き込まれるため、テキストの数が増えたからと言って線形に処理負荷が増加することはありません。 ただし、ハッシュ値を計算する過程で数回の乗算を利用するため、なるべくこの関数を呼び出さないほうが処理速度的には有利です。

取得したインデックス番号から実際のテキスト情報を取得するには、LMS_GetText関数を利用します。 また、通常はLMS_GetTextIndexByLabelとLMS_GetTextは対になって利用される場合がほとんどと思われますので、 これら二つを統合した関数、LMS_GetTextByLabelも用意されています。プロジェクトによってアクセスしやすい方を選択して利用してください。

また、外部プラグインとしてフローチャート機能を利用している場合、フローチャートから直接テキストのインデックス番号を取得することが可能ですので、この関数を利用する必要はありません。 直接LMS_GetText関数を利用してください。またこの場合、「LBL1ブロック」が存在すること自体が無駄になりますので、出力設定でこのブロックを利用しないことを選択すればメモリを節約することができます。