哪位帮我看下这段代码错误在哪里???(0分)

  • 主题发起人 主题发起人 mxq888
  • 开始时间 开始时间
M

mxq888

Unregistered / Unconfirmed
GUEST, unregistred user!
下面的我写的一个dll中的一个函数,运行时返回结果总是空的,

参数:hmz,fzh都是用逗号分格的字符串,用ExtractStrings函数似乎已经加载到了StringLost中,但是用stlzh.Strings好象读不出来,不知为何,请高手帮忙看下,谢谢了!!!!!!!!

function cal12c(hmz,fzh,c1:pchar):pchar;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,c1,c2等变量是什么含义,应该进行说明,或者取一个可取性强的名称,至少整个函数是用来做什么的要说明一下
 
已经修改,添加说明,麻烦高手指点下,谢谢!!
 
dll可以单步调试的,你调试了吗?
 
没有,我不会啊,delphi实在用不好,但必须得用现在,,,
 
我先在一个EXE中写的函数,可以用,然后移到dll中,编译,再到delphi写的测试exe中调用,结果却总是空的,没有返回值,是为什么啊,高手指点下啊。。。。。。。。。。。。。。。。。
 
后退
顶部