i have this problem, look this code of example:
src := '';
for iindex := 0 to 255 do
begin
src := src + char(byte(iindex));
writeln (iindex:5, byte(src[iindex]):5);
end;
where src is a string type and iindex is a integer type and as output i should to have something as:
iIndex byte(src[iIndex])
0 0
1 1
2 2
3 3
..................
254 254
255 255
and so was too in all lasts version of delphi until to delphi xe; now with delphi xe2, i have this output:
iIndex byte(src[iIndex])
0 0
1 0
2 1
3 2
..................
254 253
255 254
Now i ask, need use different type of string? I have found a workaround for solve it of course, updating byte(src[iindex]) to byte(src[succ(iindex)]) but so when iIndex = 255, i have byte(src[256]) that raise a exception and so need change byte in word. Of course, i don't think that it is the best solution, so i ask you if there is a better solution to it. Thanks very much.
ord(src[iIndex])
rather thanbyte(...)
? – David Heffernan