TStringList 常用方法与属性 & DelimitedText空格问题 验证有效

在处理港股委托时遇到问题,由于股票代码左补空格,TStringList的DelimitedText属性在进行哈希表操作时会忽略空格,导致数据处理错误。解决方案是正确判断ASCII码,确保大于等于空格的字符被识别。
摘要由CSDN通过智能技术生成

测试同事帮反映了我们程序在处理委托时的一个问题:对于港股的委托,我们对它的成交回报中股票代码是空的。

加日志找到原因在这里,港股的委托其股票代码是5位,会左补一个空格,而在delphi中,对于TStringList 进行类似哈希表操作时,DelimitedText会自动判断空格并跳过。

导致reqtext.securityid一直为空,在后续的处理中出错。

function MakePTReqtext(reqtext: PTReqtext; sReqtext:string):Boolean;            //902
var
  Hash: THashedStringList;
  a : TStringList;
  fixPkg : TFixPackage;
  Buffer : string;
begin
  Hash := THashedStringList.Create;
  Buffer := Trim(sReqtext);

  Hash.DelimitedText := Buffer;
  Hash.Delimiter := SOH;

  reqtext.MsgType := Hash.Values['35'];
  reqtext.IOIID := Hash.Values['23'];
  reqtext.IOITransType := Hash.Values['28'];
  reqtext.IOIRefID := Getbuff2(Hash.Values['26']);
  reqtext.clordid := Hash.Values['11'];

  reqtext.OrigClOrdID := Getbuff2(Hash.Values['41']);
  reqtext.securityid := Hash.Values['48'];                  
  Simulator.AddLog(1,'解包reqtext.securityid为' +  reqtext.securityid);//对于港股的股票代码是5位,会左补空格,此处就会取空。

  reqtext.price := Getbuff(Hash.Values['44']);
  reqtext.orderqty := Getbuff(Hash.Values['38']);
  reqtext.side := Hash.Values['54'];

  reqtext.stockholder := GetGroupValue2(Hash,con
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值