POS小票打印:// 向LPT口打印一个文本文件
procedure TPosFrm.PrintFile(AFileToPrint: string);
var
 Port, FileToPrint: TextFile;
 ALine: string;
begin
 AssignFile(FileToPrint, AFileToPrint);
 Reset(FileToprint);
 AssignFile(Port, 'LPT1');
 Rewrite(Port);
 while not Eof(FileToPrint) do
 begin
   Readln(FileToPrint, ALine);
   Writeln(Port, ALine);
 end;
 CloseFile(Port);
 CloseFile(FileToPrint);
end;
   // 打印小单
   // 输出到文本,稍后再输出到LPT1端口;
   OutFile:=ExtractFilePath(Application.ExeName)+'output.txt';
   AssignFile(F, OutFile);
   Rewrite(F);
   CompanyTitle:=SysParms.CompanyTitle+'购物清单';
   CompanyTitle:=StringOfChar(' ', (32-Length(CompanyTitle)) div 2)+CompanyTitle;
   Writeln(F, CompanyTitle);
   Writeln(F,'--------------------------------');
//    Writeln(F,'收银机:'+EdPosID.Text+'     单号:'+EdSaleID.Text);
//    Writeln(F,'收银员:'+EdOpID.Text+ '     日期:'+EdSaleDate.Text);
   Write(F,'收银员:', Format('%-10s', [STOpID.Caption]));
   Writeln(F, '单号:'+STSaleID.Caption);
   Writeln(F,'日期:'+STSaleDate.Caption+ '  时间:'+FormatDateTime('hh:mm:ss', Now));
   Writeln(F,'--------------------------------');
   //         12345678901234567890123456789012
   Writeln(F,'商品名称         数量 单价  金额');   ADSSaleList.DisableControls;
   ADSSaleList.First;
   while not ADSSaleList.Eof do
   begin
     MerName:=ADSSaleList.FieldValues['MerName'];
     len:=Length(MerName);
     if len < 18 then
       MerName:=MerName+StringOfChar(' ', 18-len);
     if (len mod 2) = 0 then
       Write(F, Copy(MerName, 1, 18))
     else
       Write(F, (Copy(MerName, 1, 17)+' '):18);
     Write(F, ADSSaleList.FieldValues['Qty']:2);
     Write(F, FormatFloat('0.0', ADSSaleList.FieldValues['Price']):6);
     Writeln(F, FormatFloat('0.0', ADSSaleList.FieldValues['Amount']):6);
     ADSSaleList.Next;
   end;
   ADSSaleList.EnableControls;   Writeln(F,'--------------------------------');
   Writeln(F,'合计:',STHj.Caption:8, '    让利:', STRl.Caption:8);
   Writeln(F,'实收:',STSs.Caption:8, '    金卡:',
           FormatCurr('0.00', CardPayment):8
           );
   Writeln(F,'现金:',
           FormatCurr('0.00', StrToCurr(EdCash.Text)-CardPayment):8,
           '    找补:', STBack.Caption:8
           );
   Writeln(F,' '); //空行,添加或减少空行即可控制出纸多少。
   CloseFile(outputfile);
   PrintFile(Outfile); // 输出文件到打印口 我调试时,AssignFile(F, OutFile);提示未声明的标示符: F,为啥,如何处理?F如何定义?Rewrite(F);  提示类型不正确,为啥???F该如何定义???急!!!

解决方案 »

  1.   

    像声明Port, FileToPrint一样声明它:var F: TextFile;—————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    —————————————————————————————————
      

  2.   

    CloseFile(outputfile);出错了,为啥?提示:提示未声明的标示符: outputfile这句给如何写???