просто пытаюсь достичь аналогичной функциональности статических локальных переменных C / C ++ в ObjectPascal / Delphi. У нас есть следующая функция на C:
bool update_position(int x, int y)
{
static int dx = pow(-1.0, rand() % 2);
static int dy = pow(-1.0, rand() % 2);
if (x+dx < 0 || x+dx > 640)
dx = -dx;
...
move_object(x+dx, y+dy);
...
}
Эквивалентный код ObjectPascal, использующий типизированные константы в качестве замены статической переменной, не компилируется:
function UpdatePosition(x,y: Integer): Boolean;
const
dx: Integer = Trunc( Power(-1, Random(2)) ); // error E2026
dy: Integer = Trunc( Power(-1, Random(2)) );
begin
if (x+dx < 0) or (x+dx > 640) then
dx := -dx;
...
MoveObject(x+dx, y+dy);
...
end;
[Ошибка DCC] test_f.pas (332): E2026 Ожидается постоянное выражение
Так есть ли способ для одноразовой инициализированной локальной переменной?