Hi,

I have encountered a strange problem. I developed the following function as a faster implementation for IntToStr:


function MyIntToStr (n: Int64): AnsiString;
const
  MaxLength= 16;

var
  CurDigit: PChar;
  Sign: Boolean;

begin
  Result:= '                ';

  CurDigit:= @(Result [MaxLength]);
  Sign:= False;

  if n< 0 then
  begin
    Sign:= True;
    n:= -n;

  end;
  if n= 0 then
    Exit ('0');


  while n<> 0 do
  begin
    CurDigit^:= Char (48+ n mod 10);
    Dec (CurDigit);
    n:= n div 10;

  end;
  if Sign then
    CurDigit^:= '-';

end;

And then, in main , I have

begin
  WriteLn (MyIntToStr (5458));
  WriteLn (MyIntToStr (5458));
  WriteLn (MyIntToStr (2));

end.

The output is:
           5458
           5458
           5452

I tried gdb and noticed the first line of MyIntToStr (Result:= '...') is not executed correctly. I am using fpc-2.6.0-1.x86_64


Thanks,
Amir
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to