最近在做住房公积金的一个项目,但是有一段代码看不懂,请各位指教,我是新手。
请问一下try里面每一个fld的作用机制是怎样的?为什么sLine不断的被赋值,不会影响数据库信息吗?
function GenRtTxnThread.CompTxnDtl( qryData: TADOQuery;
                                    sOutBank,sProtNo: String;
                                    var sLine: String ): Boolean;
var
  sTmp: String;
begin
  Result := True;  try
    // fld 1: 交易种类
    sTmp := '100301';//固定填写
    sLine := sTmp;    // fld 2: 报文类型
    sTmp := '1202';//固定填写
    sLine := sLine + sTmp;    // fld 3: 交易序号
    sTmp := Format('%16s',[qryData.FieldByName('MsgId').AsString]);
    sTmp := StringReplace(sTmp, ' ', '0', [rfReplaceAll]);
    sLine := sLine + sTmp;    // fld 4: 委托日期
    sTmp := trim(qryData.FieldByName('EntrustDate').AsString);
    if length(sTmp) <> 8 then
      sLine := sLine + FormatDateTime('YYYYMMDD',now)
    else
      sLine := sLine + sTmp;    // fld 5: 清算日期
    sTmp := '00000000';
    sLine := sLine + sTmp;    // fld 6: 用户编号
    sTmp := Format('%-18s',[qryData.FieldByName('UserNo').AsString]);
    sLine := sLine + sTmp;    // fld 7: 收费机构代码
    sTmp := Format('%-12s',[qryData.FieldByName('OrgId').AsString]);
    sLine := sLine + sTmp;    // fld 8: 机构分支代码
    sTmp := Format('%-12s',[' ']);
    sLine := sLine + sTmp;    // fld 9: 发起方开户行行号
    sTmp := Format('%-12s',[qryData.FieldByName('OrigBank').AsString]);
    sLine := sLine + sTmp;    // fld 10: 发起方开户账号
    sTmp := Format('%-35s',[qryData.FieldByName('OrigAcc').AsString]);
    sLine := sLine + sTmp;    // fld 11: 接收方代码(清算行号)
    sTmp := Format('%-12s',[sOutBank]);
    sLine := sLine + sTmp;    // fld 12: 接收方分支代码(付款人开户行行号)
    sTmp := Format('%-12s',[qryData.FieldByName('OutAccBank').AsString]);
    sLine := sLine + sTmp;    // fld 13: 付款人账号
    sTmp := Format('%-35s',[qryData.FieldByName('PayerAcc').AsString]);
    sLine := sLine + sTmp;    // fld 14: 付款人名称
    sTmp := Format('%-60s',[qryData.FieldByName('PayerName').AsString]);
    sLine := sLine + sTmp;    // fld 15: 业务种类
    sTmp := trim(qryData.FieldByName('TranType').AsString);
    sLine := sLine + sTmp;    // fld 16: 合同协议号
    sTmp := Format('%-60s',[sProtNo]);
    sLine := sLine + sTmp;    // fld 17: 交易货币代码
    sTmp := Format('%-3s',[qryData.FieldByName('Currency').AsString]);
    sLine := sLine + sTmp;    // fld 18: 金额
    sTmp := Format('%15s',[qryData.FieldByName('Amount').AsString]);
    sTmp := StringReplace(sTmp, ' ', '0', [rfReplaceAll]);
    sLine := sLine + sTmp;    // fld 19: 手续费
    sTmp := Format('%15s',[qryData.FieldByName('Charge').AsString]);
    sTmp := StringReplace(sTmp, ' ', '0', [rfReplaceAll]);
    sLine := sLine + sTmp;    // fld 20: 附言
    sTmp := Format('%-60s',[qryData.FieldByName('Re').AsString]);
    sLine := sLine + sTmp;    // fld 21: 业务处理方流水
    sTmp := '0000000000000000';
    sLine := sLine + sTmp;    // fld 22: 返回码
    sTmp := Format('%-8s',[' ']);
    sLine := sLine + sTmp;    // fld 23: 主动缴费标识
    sTmp := '0';//非主动缴费
    sLine := sLine + sTmp;    // fld 24: 变长定制信息长度
    sTmp := '00000000';
    sLine := sLine + sTmp;    // fld 25: 密押(MAC)
    sTmp := Format('%64s',[' ']);
    sTmp := StringReplace(sTmp, ' ', 'C', [rfReplaceAll]);
    sLine := sLine + sTmp;  except
    on E: Exception do
    begin
      Result := False;
    end;
  end;
end;