2012-06-12 3 views
0

J'ai obtenu un "nouveau travail" pour "archiver" certaines données avec QR Filter. Lorsque la structure de données est modifiée et enregistrée dans la base de données, nous démarrons une «impression silencieuse» avec un filtre WMF, j'attrape les fichiers et je les stocke tous dans un enregistrement de journal, dans un BLOB de base de données. Tout était OK, mais plus tard, ils sont nécessaires pour éviter de répéter les mêmes rapports.Delphi, QR, WMF

Nous avons désactivé les "champs QR d'horodatage", mais l'enregistrement a été répété.

J'ai mis du CRC dans la base de données, et je l'ai calculé à partir de données de page (WMF). Ce qui était intéressant, c'est que lorsque j'ai quitté le programme, le WMF nouvellement généré a changé - donc le CRC a changé aussi.

Je pensais que cela a été causé par QR, puis j'ai vérifié cela avec un programme simple 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; 

Lorsque je redémarre l'application, le nouveau fichier WMF est différent du précédent.

Je pensais que je résous le problème avec étirer le wmf dans le bmp.Canvas, mais cela a ralenti la journalisation, parce que chaque bmp était de 4 Mo, et avec 10 pages, je dois CRC sur 4 * 10 Mo .. Donc, je cherche un moyen simple, je peux calculer le CRC sur WMF, peut-être si je peux diviser l'en-tête WMF entièrement, puis je reçois résoudre ce problème ... Je ne sais pas en ce moment.

Avez-vous une idée? S'il vous plaît, faites-moi savoir!

Merci.

+1

Par "QR", voulez-vous dire rapports rapides? Ou autre chose? Mais puisque vous semblez avoir déterminé que "QR" n'est pas connecté à votre problème, pourquoi l'avez-vous inclus dans votre question? Je ne suis pas sûr de ce que vous demandez. Veuillez modifier votre question pour supprimer les détails non pertinents et accéder directement au problème que vous posez. –

+0

QR = QuickReport, désolé! – durumdara

Répondre

0

Exportez le rapport sous forme de texte, puis comparez son crc.

C'est la solution la plus simple.

Vous pouvez également énumérer les éléments du métafichier, mais cela sera plus difficile.