我得到了一份“新工作”,用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标题,那么我就解决了这个问题......我现在还不知道。
你知道吗?请让我知道!感谢。
答案 0 :(得分:0)
将报告导出为文本,然后比较其crc。
这是最简单的解决方案。
您也可以枚举元文件元素,但这将更加困难。