首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 关于解析一段报文,用treelist显示 [无满意答案结贴,结贴人:SUMI_SUMI]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • SUMI_SUMI
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-05-13 19:49:08 楼主
    我想解析一段报文,分成若干个项,项的名称用一段带逗号的字符串设置
    例如报文XXXXXXXXXXXXX,项设置格式 1,2,3,4,5........41
    那么就会按照项设置在treelist上被解析成A+B+1-41个项,项的名称就是A,B,1-41.
    可是我的代码,41项老漏掉了第40项,不知道为什么 请大家帮忙看看
    var
      i,j,m,n,pp,TmpLen,Index:integer;
      TmpStr,Str1,Cdate,TmpRetStr,str:string;
    begin
      TmpRetStr:= aData;
      Cdate:=FormatDateTime('yyyy-MM-dd hh:mm:ss',Now());

      FDataRecord[1].ProID:= FProID;
      FDataRecord[1].DataName:='A';
      FDataRecord[1].DataValue := copy(TmpRetStr,3,10);
      FDataRecord[1].DataUnit := '';
      FDataRecord[1].CTime := Cdate;

      i:=StrToInt(copy(TmpRetStr,13,2));
      FDataRecord[2].ProID:= FProID;
      FDataRecord[2].DataName:='B';
      FDataRecord[2].DataValue := copy(TmpRetStr,13,2);
      FDataRecord[2].DataUnit :='';
      FDataRecord[2].CTime := Cdate;

      delete(TmpRetStr,1,14); 
      //Index:=3;
      Index:=1;
      TmpStr:=TmpRetStr;
      for m:=1 to i do
      begin
      try
        j:=0;
        pp:=StrToInt64('$'+copy(TmpRetStr,3,2)+copy(TmpRetStr,1,2));
        TmpRetStr:=copy(TmpRetStr,1,pp*2-2);
        while j <NameListStr.Count do
        begin
          DisposJLMB3Burth(TmpRetStr,Cdate,Index,j);
          Index:=Index+1;
          j:=j+1;
          if j=4 then
          begin
            TmpLen:=StrToInt64('$'+FDataRecord[Index-1].DataValue);
            for pp:=1 to 23 do
            begin
              if (TmpLen and 1)=1 then
              begin
                if (pp>12) and (pp <18) then
                for n:=0 to 2 do
                begin
                  DisposJLMB3Burth(TmpRetStr,Cdate,Index,j);
                  j:=j+1;
                  Index:=Index+1;
                end
                else if pp=22 then
                begin
                  for n:=0 to 3 do
                  begin
                    DisposJLMB3Burth(TmpRetStr,Cdate,Index,j);
                    j:=j+1;
                    Index:=Index+1;
                  end
                end
                else begin
                  DisposJLMB3Burth(TmpRetStr,Cdate,Index,j);
                  j:=j+1;
                  Index:=Index+1;
                end;
              end //if (TmpLen and 1)=1 then
              else begin
                if (pp>12) and (pp <18) then
                  j:=j+3
                else if pp=22 then
                  j:=j+4
                else
                  j:=j+1;
              end; //else begin
              TmpLen:=TmpLen shr 1;
            end;// for pp:=1 to 23 do
          end; //if j=4 then
        end; //while j <NameListStr.Count do
      except
        continue;
      end;  //try
      delete(TmpRetStr,1,2);
    end; //for m:=1 to i do
    end;

    ==================================
    function FReplaceStr(aStr : String; DestStr:string; RepStr :string) : String;
    var
      i,Len:integer;
      TmpStr : string;
      ResultStr : string;
    begin
      Len := Length(DestStr);
      for i:=1 to length(aStr) div Len do
      begin
        TmpStr := copy(aStr,(i-1)*Len+1,Len);
        if(TmpStr=DestStr) then
        TmpStr := RepStr;
      ResultStr:=ResultStr + Tmpstr;
      end;
      result := ResultStr;
    end;
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • SUMI_SUMI
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-13 20:09:531楼 得分:0
    补充一下 好像是超过40项就会出错...小于40项没事
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • SUMI_SUMI
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-14 13:46:522楼 得分:0
    有没有人帮我查查错误- -
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gjw310
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-14 13:50:173楼 得分:0
    例如报文XXXXXXXXXXXXX,项设置格式 1,2,3,4,5........41
    那么就会按照项设置在treelist上被解析成A+B+1-41个项,项的名称就是A,B,1-41.
    ???
    不太清楚
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • SUMI_SUMI
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-14 16:54:444楼 得分:0
    一段报文 我输入1,2,3.........41
    哪么那段报文就解析并在treelist里面显示成
    A    XXX
    B    XXX
    1    XXX
    2    XXX
    3    XXX
    .
    .
    .
    .
    39  XXX
    40  XXX
    41  XXX
    可是我解析出来第40项目莫名其妙不见了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • SUMI_SUMI
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-15 09:42:135楼 得分:0
    还没找到原因
    循环不知道哪里错了
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved