Error printing dot matrix reports

Hi;

When i am in preview of a dot matrix report, i press Ctrl + P to print the current page, and changge the number of copies to 3 or more, appears the following screen, after print the first page:

Cannot open file: %TEMPPATH%\frE8.tmp, the system could not locate the
specified file.

The filename is a random name, and the TEMPPATH is the current environment variable %TEMP%.

This only occurs when the number of copies is diferent of 1.

Thanks,

Emerson.

Comments

  • edited 3:22PM
    Correct the frxDMPExport.pas file:
    procedure TfrxDotMatrixExport.SpoolFile(const FileName: String);
    const
      BUF_SIZE = 1024;
    var
      f: TFileStream;
      buf: String;
      l: longint;
    begin
      if Report.ReportOptions.Name <> '' then
        frxPrinters.Printer.Title := Report.ReportOptions.Name else
        frxPrinters.Printer.Title := Report.FileName;
      frxPrinters.Printer.BeginRAWDoc;
    
      f := TFileStream.Create(FileName, fmOpenRead);
      SetLength(buf, BUF_SIZE);
      l := BUF_SIZE;
      while l = BUF_SIZE do
      begin
        l := f.Read(buf[1], BUF_SIZE);
        SetLength(buf, l);
        frxPrinters.Printer.WriteRAWDoc(buf);
      end;
    
      f.Free;
      frxPrinters.Printer.EndRAWDoc;
    end;
    procedure TfrxDotMatrixExport.Finish;
    var
      i: Integer;
      fname: String;
      f, ffrom: TFileStream;
    begin
      FStream.Free;
      if not frxPrinters.HasPhysicalPrinters then Exit;
    
      if not FSaveToFile then
      begin
        fname := GetTempFName;
        f := TFileStream.Create(fname, fmCreate);
        ffrom := TFileStream.Create(FileName, fmOpenRead);
        f.Write(FPrinterInitString[1], Length(FPrinterInitString));
        f.CopyFrom(ffrom, 0);
        f.Free;
        ffrom.Free;
        f := TFileStream.Create(FileName, fmCreate);
        ffrom := TFileStream.Create(fname, fmOpenRead);
        f.CopyFrom(ffrom, 0);
        f.Free;
        ffrom.Free;
        DeleteFile(fname);
        for i := 1 to FCopies do
          SpoolFile(FileName);
        DeleteFile(FileName);
      end;
    end;
    

Leave a Comment