Delphi 7 TQRPDFDocumentFilter trava o sistema no Windows 10

Em algumas máquinas (apenas algumas) com Windows 10 ao salvar o pdf usando TQRPDFDocumentFilter o sistema trava e fecha.
Solução :
Alterar no arquivo QRPDFFilt.pas as seguintes assinaturas :

De :
function cvtDWord(Buf: array of byte; P: Integer) : DWORD;
Para:
function cvtDWord(const Buf: array of byte; P: Integer): DWORD;

De :
function cvtInt(Buf: array of byte; P: Integer) : Integer;
Para:
function cvtInt(const Buf: array of byte; P: Integer): Integer;

Compila e corra para abraço …rsrsrs

Senão resolver com apenas essa mudança acima faça seguinte também:

NA UNIT QRPDFFILT.PAS, FAZER AS SEGUINTES ALTERAÇÕES
Junto com:
function cvtInt(Buf: array of byte; P: Integer) : Integer;

Criar:
function QRcvtInt(Buf: array of byte; P: Integer) : Integer;
var
pp, bb : integer;
begin
pp := p+1;
bb := (256*Buf[P]);
Result:= (Buf[pp]) + bb;
end;

Em
MakeTTFont

Criar
P: Integer;

Substituir
PDFFont.Metrics[K]:=cvtInt(Buff, Offset+(K*4));

por
PDFFont.Metrics[K] := qrcvtInt (Buff, Offset + (K * 4));//PDFFont.Metrics[K]:=cvtInt(Buff, Offset+(K*4));

Substituir
ntabs:=cvtInt(Buff, 4);

por
ntabs:= 256*Byte(Buff[P])+Byte(Buff[P+1]);//ntabs:=cvtInt(Buff, 4);

Substituir
toff:=cvtDWord(Buff, Offset+8);
tlen:=cvtDWord(Buff, Offset+12);

por
P := Offset+8;
toff:=256*256*256*Byte(Buff[P])+256*256*Byte(Buff[P+1])+256*Byte(Buff[P+2])+Byte(Buff[P+3]);//toff:=cvtDWord(Buff, Offset+8);
P := Offset+12;
tlen:=256*256*256*Byte(Buff[P])+256*256*Byte(Buff[P+1])+256*Byte(Buff[P+2])+Byte(Buff[P+3]);//tlen:=cvtDWord(Buff, Offset+12);

Substituir
PDFFont.NumMetrics:=cvtInt(Buff, toff+tlen-2);

por
PDFFont.NumMetrics:=cvtInt(Buff, toff+tlen-2);

 

OBS:A correção deve ser feita no arquivo qrpdffilt.pas

Deixe um comentário

×