M
mxq888
Unregistered / Unconfirmed
GUEST, unregistred user!
下面的我写的一个dll中的一个函数,运行时返回结果总是空的,
参数:hmz,fzh都是用逗号分格的字符串,用ExtractStrings函数似乎已经加载到了StringLost中,但是用stlzh.Strings好象读不出来,不知为何,请高手帮忙看下,谢谢了!!!!!!!!
function cal12c(hmz,fzh,c1char)char;export;stdcall;
var
stlzh,stlfzhl:Tstringlist;
i,j,ipos:integer;
hmtj,fhm,ResultStr:string;
begin
//创建TstringList
stlzh:=Tstringlist.Create();
stlfzh:=Tstringlist.Create();
//加载号码组到Tstringlist中
ExtractStrings([','],[ ],hmz,stlzh);
ExtractStrings([','],[ ],fzh,stlfzh);//
i:=0;
j:=1;
//计算一次
ipos:= stlzh.Count;
for i:=0 to stlzh.Count-1 do
begin
hmtj:=stlzh.Strings;
for j:=0 to stlfzh.Count-1 do
begin
fhm:=stlfzh.Strings[j];
ipos:=pos2(hmtj,fhm);//pos2为自定义函数,比较hmtj和fhm有几个重复的字符。
if pos(','+inttostr(ipos)+',',c1)>0 then //如果重复的个数符合条件
begin
stlcal.Add(fhm);//这句有问题,发现fhm似乎为空,不知为何???
end;
end;
end;
ResultStr:='';
//释放
stlfzh.Free;
stlzh.Free;
...... //这部分省略部分无关代码。。。主要是上面有问题
//返回结果
cal12c:=pchar(resultstr);//resultstr为从stlcal中按一定规则取出的部分字符串
end;
//说明:
函数是将两组字符串比较,找到fzh中符合条件的字串。
参数hmz,fzh为逗号为隔的字符串,c1为',1,2,3,'形式的字符串
如:hmz='02 03 05 08,06 10 11 14,01 07 09 12'
fzh='01 02 03 04,01 02 03 05,01 02 03 06,
01 02 03 07,01 02 03 08,01 02 03 09,01 02 03 10'
问题是在dll中,用ExtractStrings往TStringList中加载数据,好象读不出来,不知为什么????我事先在一个窗体中测试,可以的。移到dll中,调用就不行了。
参数:hmz,fzh都是用逗号分格的字符串,用ExtractStrings函数似乎已经加载到了StringLost中,但是用stlzh.Strings好象读不出来,不知为何,请高手帮忙看下,谢谢了!!!!!!!!
function cal12c(hmz,fzh,c1char)char;export;stdcall;
var
stlzh,stlfzhl:Tstringlist;
i,j,ipos:integer;
hmtj,fhm,ResultStr:string;
begin
//创建TstringList
stlzh:=Tstringlist.Create();
stlfzh:=Tstringlist.Create();
//加载号码组到Tstringlist中
ExtractStrings([','],[ ],hmz,stlzh);
ExtractStrings([','],[ ],fzh,stlfzh);//
i:=0;
j:=1;
//计算一次
ipos:= stlzh.Count;
for i:=0 to stlzh.Count-1 do
begin
hmtj:=stlzh.Strings;
for j:=0 to stlfzh.Count-1 do
begin
fhm:=stlfzh.Strings[j];
ipos:=pos2(hmtj,fhm);//pos2为自定义函数,比较hmtj和fhm有几个重复的字符。
if pos(','+inttostr(ipos)+',',c1)>0 then //如果重复的个数符合条件
begin
stlcal.Add(fhm);//这句有问题,发现fhm似乎为空,不知为何???
end;
end;
end;
ResultStr:='';
//释放
stlfzh.Free;
stlzh.Free;
...... //这部分省略部分无关代码。。。主要是上面有问题
//返回结果
cal12c:=pchar(resultstr);//resultstr为从stlcal中按一定规则取出的部分字符串
end;
//说明:
函数是将两组字符串比较,找到fzh中符合条件的字串。
参数hmz,fzh为逗号为隔的字符串,c1为',1,2,3,'形式的字符串
如:hmz='02 03 05 08,06 10 11 14,01 07 09 12'
fzh='01 02 03 04,01 02 03 05,01 02 03 06,
01 02 03 07,01 02 03 08,01 02 03 09,01 02 03 10'
问题是在dll中,用ExtractStrings往TStringList中加载数据,好象读不出来,不知为什么????我事先在一个窗体中测试,可以的。移到dll中,调用就不行了。