mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-10-27 22:52:21 +01:00
* fix bugs 3477, 3478, 3479
This commit is contained in:
parent
735a5ca27c
commit
cb255fffed
@ -788,7 +788,11 @@ Var ChPos,OldPos,ArgPos,DoArg,Len : Longint;
|
||||
Index,Width,Prec : Longint;
|
||||
Left : Boolean;
|
||||
Fchar : char;
|
||||
{$ifdef ver1_0}
|
||||
vl : int64;
|
||||
{$else}
|
||||
vq : qword;
|
||||
{$endif}
|
||||
|
||||
{
|
||||
ReadFormat reads the format string. It returns the type character in
|
||||
@ -1064,9 +1068,10 @@ begin
|
||||
// Insert(':',ToAdd,5);
|
||||
end;
|
||||
'X' : begin
|
||||
{$ifdef ver1_0}
|
||||
if Checkarg(vtinteger,false) then
|
||||
begin
|
||||
vl:=Args[Doarg].VInteger;
|
||||
vl:=Args[Doarg].VInteger and int64($ffffffff);
|
||||
index:=16;
|
||||
end
|
||||
else
|
||||
@ -1081,21 +1086,37 @@ begin
|
||||
begin
|
||||
// determine minimum needed number of hex digits.
|
||||
Index:=1;
|
||||
{$Ifdef ver1_0}
|
||||
While (DWord(1 shl (Index*4))<=DWord(Args[DoArg].VInteger)) and (index<8) do
|
||||
inc(Index);
|
||||
{$else}
|
||||
While (qWord(1 shl (Index*4))<=qWord(vl)) and (index<16) do
|
||||
inc(Index);
|
||||
{$endif}
|
||||
If Index>Prec then
|
||||
Prec:=Index;
|
||||
{$ifdef ver1_0}
|
||||
ToAdd:=HexStr(int64(vl),Prec);
|
||||
{$else}
|
||||
ToAdd:=HexStr(qword(vl),Prec);
|
||||
{$endif}
|
||||
end;
|
||||
{$else}
|
||||
if Checkarg(vtinteger,false) then
|
||||
begin
|
||||
vq:=Cardinal(Args[Doarg].VInteger);
|
||||
index:=16;
|
||||
end
|
||||
else
|
||||
begin
|
||||
CheckArg(vtInt64,true);
|
||||
vq:=Qword(Args[DoArg].VInt64^);
|
||||
index:=31;
|
||||
end;
|
||||
If Prec>index then
|
||||
ToAdd:=HexStr(vq,index)
|
||||
else
|
||||
begin
|
||||
// determine minimum needed number of hex digits.
|
||||
Index:=1;
|
||||
While (qWord(1) shl (Index*4)<=vq) and (index<16) do
|
||||
inc(Index);
|
||||
If Index>Prec then
|
||||
Prec:=Index;
|
||||
ToAdd:=HexStr(vq,Prec);
|
||||
end;
|
||||
{$endif}
|
||||
end;
|
||||
'%': ToAdd:='%';
|
||||
end;
|
||||
@ -2215,7 +2236,7 @@ begin
|
||||
begin
|
||||
HB:=((C=BC) and (BreakStr=Copy(L,P,BLen)));
|
||||
If HB then
|
||||
Inc(P,Blen-1)
|
||||
Inc(P,Blen)
|
||||
else
|
||||
begin
|
||||
If (P>MaxCol) then
|
||||
@ -2299,7 +2320,10 @@ const
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.23 2004-12-19 17:55:38 michael
|
||||
Revision 1.24 2004-12-26 13:04:30 peter
|
||||
* fix bugs 3477, 3478, 3479
|
||||
|
||||
Revision 1.23 2004/12/19 17:55:38 michael
|
||||
+ Implemented wraptext
|
||||
|
||||
Revision 1.22 2004/12/01 10:34:46 michael
|
||||
|
||||
Loading…
Reference in New Issue
Block a user