● 関数リファレンス
変数情報の取得
int __stdcall StrCalc_get_paramname(PSTRCALC_PARAM prm,char **pptr,PPARAM_INFO pinfo,int *px,int *py);
引数
引数名 | 意味 |
prm | STRCALC_PARAM 構造体の実体アドレス |
pptr | 対象文字列を指すポインタのアドレス |
pinfo | 取得した変数情報を格納するPARAM_INFO 構造体の実体のアドレス |
px | 一、二次元配列の場合、指定された横インデックスを格納する領域のアドレス |
py | 二次元配列の場合、指定された縦インデックスを格納する領域のアドレス |
戻り値
正常終了した時は STATUS_NORMAL を返します。
それ以外は状態コードを返します。
説明
文字列で与えられた変数名を検索し、情報を返します。
変数の登録情報だけでなく、配列表記の場合はインデックスも調べる点が関数StrCalc_search_param とは異なります。
px 、py に NULL を指定する事はできませんので注意してください。
|
テスト1.
#include <stdio.h>
#include <string.h>
#include "sc39.h"
void main(void)
{
STRCALC_PARAM prm;
PARAM_INFO inf,out;
int ret,x,y;
char *str = "prm_single+277";
char *ptr;
if (!StrCalc_init(&prm)){
printf("init err.\n");
return;
}
/* 変数を登録する */
strcpy(inf.name,"prm_single");
inf.type = PRM_SINGLE;
inf.btempflg = 1;
if (StrCalc_new_param(&prm,&inf) <= 0){
printf("変数の登録に失敗\n");
StrCalc_term(&prm);
return;
}
/* 変数の検索 */
ptr = str;
ret = StrCalc_get_paramname(&prm,&ptr,&out,&x,&y);
if (ret != STATUS_NORMAL){
printf("関数StrCalc_get_paramname エラー : %d\n",ret);
StrCalc_term(&prm);
return;
}
/*
関数終了時の ptr は、検索対象の変数名の直後を指します。
文字列走査を続ける場合は、ptr をそのまま用いる事ができます。
*/
/* 結果表示 */
printf("\n\n");
printf("文字列 : %s\n",str);
printf("後続 : %s\n",ptr);
printf("\n\n");
printf("name : %s\n",out.name);
printf("type : %s\n",
(out.type == PRM_SINGLE)? "PRM_SINGLE" :
(out.type == PRM_DIM1)? "PRM_DIM1" :
(out.type == PRM_DIM2)? "PRM_DIM2" : "error");
printf("btemp : %d\n",out.btempflg);
StrCalc_term(&prm);
}
テスト2.
#include <stdio.h>
#include <string.h>
#include "sc39.h"
void main(void)
{
STRCALC_PARAM prm;
PARAM_INFO inf,out;
int ret,x,y;
char *str = "prm_2dim(3,2)+2";
char *ptr;
if (!StrCalc_init(&prm)){
printf("init err.\n");
return;
}
strcpy(inf.name,"prm_2dim"); /* 二次元配列の登録 */
inf.type = PRM_DIM2;
inf.width = 5;
inf.height = 6;
inf.btempflg = 1;
if (StrCalc_new_param(&prm,&inf) <= 0){
printf("変数の登録に失敗\n");
StrCalc_term(&prm);
return;
}
/* 変数の検索 */
ptr = str;
ret = StrCalc_get_paramname(&prm,&ptr,&out,&x,&y);
if (ret != STATUS_NORMAL){
printf("関数StrCalc_get_paramname エラー : %d\n",ret);
StrCalc_term(&prm);
return;
}
/* 結果表示 */
printf("\n\n");
printf("文字列 : %s\n",str);
printf("後続 : %s\n",ptr);
printf("\n\n");
printf("name : %s\n",out.name);
printf("type : %s\n",
(out.type == PRM_SINGLE)? "PRM_SINGLE" :
(out.type == PRM_DIM1)? "PRM_DIM1" :
(out.type == PRM_DIM2)? "PRM_DIM2" : "error");
printf("width : %d\n",out.width);
printf("height : %d\n",out.height);
printf("btemp : %d\n",out.btempflg);
printf("\n\n");
printf("pos x : %d\n",x);
printf("pos y : %d\n",y);
StrCalc_term(&prm);
}