● fixed X ユーティリティー - 関数リファレンス

fixed X 版 StrCalc の実行

    int __stdcall    fixedutil_strcalc(PFIXED_STRCALC_PARAM pinf );

引数

引数名意味
pinfFIXED_STRCALC_PARAM構造体の実体の先頭アドレス

戻り値

戻り値
(fixutil.h内で定義)
意味
STATUS_NORMAL正常終了時に返されます。
STATUS_ERROR文字列内に、計算式規則に反する記述があった場合に返されます。
STATUS_DIVIDEBYZEROゼロによる除算、剰余計算を行った場合に返されます。
STATUS_ILLEGALPARENTHESIS括弧の表現エラー。括弧の個数が異なる、順序が逆、ネストが 16階層を越えた場合等に返されます。
STATUS_MEMERRORメモリ表現のエラー。メモリの表現に誤りがある場合や、ネストが 16階層を越えた場合、指定インデックスが実メモリの範囲を超えている場合等に返されます。
なお、メモリ表現内の式に誤りがあった場合は、どのような理由によるものであっても STATUS_MEMERROR を返します。
STATUS_TOOMANYITEM数値の項数が多過ぎる場合に返されます。
STATUS_INVALIDARGS数学関数の引数エラー。個数の過不足や、各引数の区切り方に問題があった場合に返されます。
STATUS_ILLEGALFUNCTIONCALL数学関数の使用法エラー。与えた引数が規則の範囲外の場合に返されます。
STATUS_RANGEOVER計算中、オーバーフローが発生した場合に返されます。
STATUS_TOOLONGNUM一つの項に記述されている数値が長過ぎる場合に返されます。
STATUS_NOTENOUGHMEMメモリの確保に失敗した場合に返されます。
STATUS_PARAMERROR設定値エラー。下記参照の事

説明

StrCalc による数式文字列の計算を行います。

この関数を使用する場合、実行前に pinf が指す領域を関数fixedutil_strcalc_init で初期化する必要があります。また、全ての計算が終了したら、使用済みの領域を関数fixedutil_strcalc_term で終了する必要があります。

関数を呼び出す前に、pinf で指す FIXED_STRCALC_PARAM構造体 のメンバに2つの情報をセットします。


上記の情報設定は、関数fixedutil_strcalc_init を呼び出して初期化した後で行います(関数fixedutil_strcalc を呼び出す直前に設定する)。

メモリは、FIXEDVAL領域群の先頭アドレスを格納したPFIXEDVAL型の一次元配列です。メモリインデックスは指定したメモリの順番に対応していますが、実メモリはインデックス順に連続している必要は無く、ポインタの配列上で論理的に連続した状態ならば使用できます。
関数fixedutil_strcalc を実行しても、pmem に設定したメモリは解放されません。また、内容も更新されません。

次の条件の場合、STATUS_PARAMERROR を返して中断します。



戻り値が STATUS_NORMAL の場合、計算結果が メンバ pans の指す領域に格納され、STATUS_NORMAL 以外の場合はゼロが格納されます。pans の指す領域は、関数fixedutil_strcalc_term で StrCalc を終了すると自動で解放されますので、呼び出し側で解放しようとしないでください。