下面是我写的一段向GPRS发送数据的程序.
//gprs_num,gprs_jzqh,gprs_cjqh:为全局变量
1:line_jzqh:=frmdata.Query_sscs_line.fieldbyname('jzq_bh').asinteger;
2:result:=sendata(line_ip_address,line_sendata);//发送数据的函数
3:main.Gprs_num:=line_ip_address;
4:main.Gprs_jzqh:=line_jzqh;
5:main.Gprs_cjqh:=line_have_port;
运行这段代码前后的line_jzqh不相同
前面的line_jzqh值是正常运行完发送数据后line_jzqh值变的非常大.请问这是什么原因.
还有就是当下一个循环时运行到3句时会出现内存泻漏.
下面是我发送数据的函数.
function tmain.sendata(phone_num,data:string):boolean;
var
   userid:array[1..12] of char;
   src:array[0..1023] of char;
   len:cardinal;
   buf:arr;
   sult,i:integer;
   s:string;
begin
  try
   for i:=1 to length(phone_num) do
     userid[i]:=phone_num[i];
   @function_do_send_user_data:=GetProcAddress(hand,'do_send_user_data'); //取发送函数地址
   if (@function_do_send_user_data=nil)  then
      begin
         addlog_string('取不到 do_send_user_data 地址');
         result:=false;
         exit;
      end;
   len:=length(data);
   if len>0 then
      begin
         for i:=1 to len do
            src[i]:=data[i];
//厂家提供的发送数据的函数
         sult:=function_do_send_user_data(@userid[1],@src[1],len,@buf[1]);//发送数据
         addsendata_log('向 '+phone_num+' 发送数据:'+strtohexstrdata,len));
         if sult<0 then
            begin
              s:=buf;
              addlog_string('向 '+phone_num+' 发送数据:失败');
              result:=false;
              exit;
            end;
         result:=true;
      end
   else
      begin
        addlog_string('数据不能为空');
        result:=false;
        exit;
      end;
  except
    result:=false;
  end;
end;