15,471
社区成员
发帖
与我相关
我的任务
分享
全局字符变量
//namesstring存放的格式为"name1;name2;name3;name4";是从外部程序调用Setname设定,字符的长度不限
char * namesstring;
//valuesstring,字符的长度不限,根据namesstring值,获取的数据,并与其一一对应,
//其内容格式为"value1;value2;value3;value4"
//name1的值为value1,name2的值为value2,name3的值为value3.......
//该内容给提供给外程序调用Getvalue方法输出
char * valuesstring;
//根据name内容.返回其对应的value值
char getinfo(char * name)
{
//这里省略一些业务代码,根据name而查找相关内容,并返回name对应的value值
//如果没查到,则返回""
return "";
}
//以下函数为主函数,在Dll中的线程中执行.
void doit()
{
char *delims = ";";
char *Ret;
valuesstring="";
char cTemp[1024];
memset(cTemp, 0, 1024);
Ret = strtok(namesstring,delims);
while( Ret != NULL )
{
sprintf(cTemp, "%s;%s", cTemp, getinfo(Ret));
Ret = strtok( NULL, delims );
}
valuesstring=new char[1024];
strcpy_s(valuesstring, 1024, cTemp);
}
//该方法供给外部程序设置namesstring值
bool setname(char * name,int nMaxCount)
{
strcpy_s(namesstring, nMaxCount, name);
return true;
}
//该方法只供给外部程序获取与namesstring值一一对应的valuesstring值
bool getvalue( char * values,int nMaxCount)
{
strcpy_s(values, nMaxCount, valuesstring);
return true;
}
var
sStr:string;
begin
sStr := 'a;b;c;d';
setname(pchar(sStr),length(sStr));
end;
var
ARet:pchar;
sRet:string;
begin
GetMem(ARet, 1024);
getvalue(ARet,1024);
sRet := ARet;
FreeMem(ARet);
lable1.caption := sRet; //lable1的为标签控件,显示返回的内容
end;
if (!namesstring)
{
namesstring = new char(nMaxCount);
}
strcpy_s(namesstring, nMaxCount, name);
return true;