德尔福,QR,WMF

时间:2012-06-12 15:14:36

标签: delphi crc metafile

我得到了一份“新工作”,用QR过滤器“存档”一些数据。

当数据结构被修改并保存到数据库时,我们用WMF过滤器开始“静默打印”,我捕获文件,并将它们全部存储在日志记录中,放在DataBase BLOB中。

一切都很好,但稍后他们需要避免重复相同的报告。

我们禁用了“时间戳QR字段”,但记录重复了。

我在数据库中放了一些CRC,我从页面数据(WMF)中计算出来。

有趣的是,当我退出程序时,新生成的WMF发生了变化 - 因此CRC也发生了变化。

我认为这是由QR造成的,然后我用一个简单的Delphi程序检查了这个:

procedure TForm1.BitBtn1Click(Sender: TObject);
var
    WMF : TMetaFile;
    mfc : TMetaFileCanvas;
begin
    WMF := TMetaFile.Create;
    mfc := TMetaFileCanvas.Create(WMF, 0);
    try
        WMF.Width := 1000;
        WMF.Height := 1000;
        mfc.Brush.Color := clRed;
        mfc.FillRect(Rect(0, 0, 100, 100));
    finally
        mfc.Free;
        WMF.SaveToFile('test1.wmf');
        WMF.Free;
    end;
end;

当我重新启动应用程序时,新的wmf文件与之前的文件不同。

我认为我通过将wmf拉伸到bmp.Canvas来解决问题,但这会减慢日志记录,因为每个bmp都是4 MB,而10页我必须在4 * 10 MB上CRC ... (WMF每页仅为85-100 KB,而4 MB位图)

所以我正在寻找一些简单的方法我可以在WMF上计算CRC,也许如果我可以完全拆分WMF标题,那么我就解决了这个问题......我现在还不知道。

你知道吗?请让我知道!

感谢。

1 个答案:

答案 0 :(得分:0)

将报告导出为文本,然后比较其crc。

这是最简单的解决方案。

您也可以枚举元文件元素,但这将更加困难。

相关问题