测试同事帮反映了我们程序在处理委托时的一个问题:对于港股的委托,我们对它的成交回报中股票代码是空的。
加日志找到原因在这里,港股的委托其股票代码是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