pascalabcnet / pascalabcnetide

0 stars 0 forks source link

string + uint64, string + cardinal работает неправильно #287

Closed avkw1 closed 11 months ago

avkw1 commented 11 months ago

Операция + для строки и целого числа всегда преобразует число в int32. Не знаю, баг это или нет, однако работает не так, как ожидалось, легко сделать ошибку. Чтобы получилось правильно, нужно добавлять .ToString. Пример кода:

program bug_string_uint64;

var
  x: uint64;
  y: cardinal;
  s: string;

begin
  x := 123456789012345;
  s := 'x = ' + x;  // x.ToString
  writeln(s);
  y := 4000000000;
  s := 'y = ' + y;  // y.ToString
  writeln(s);
end.
SunSerega commented 11 months ago

Да, сейчас оператор сложения со строкой перегружен только для integer, это создаёт не интуитивное поведение...

SunSerega commented 11 months ago

Только вы не туда issue залили. Это репозиторий для issue IDE - а ваша проблема проявляется и без IDE, даже если консольный компилятор использовать. Значит её надо в основной репозиторий.

SunSerega commented 11 months ago

только для integer

Поправка - ещё для real: https://github.com/pascalabcnet/pascalabcnet/blob/master/bin/Lib/PABCSystem.pas#L4243

avkw1 commented 11 months ago

Создал в основном репозитории https://github.com/pascalabcnet/pascalabcnet/issues/2985