关于通信时组包的有关问题

关于通信时组包的问题
最近在做住房公积金的一个项目,但是有一段代码看不懂,请各位指教,我是新手。
请问一下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('Remark').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;