You program isn't valid. You're assigning a constant (a global variable) to Result, so you shouldn't change it's contents through a pointer (if you change it normally the compiler+RTL will COW the value). You can use a shortstring or: Result := StringOfChar(' ', 16);
-Flávio On Tue, Apr 24, 2012 at 7:36 PM, Amir <a...@aavani.net> wrote: > 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 _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel