Все зависит от типа «я». В Delphi каждый обычно объявляет переменные цикла как «i: Integer», но это также может быть «i: PChar», который разрешает в PAnsiChar все, что находится ниже Delphi 2009 и FPC (я предполагаю здесь), и в PWideChar на Delphi 2009 и Delphi.NET (также догадка).
Поскольку Delphi 2009 может выполнять указатель-математику, Inc (i) также можно делать для типизированных указателей (если они определены с включенным POINTER_MATH).
Например:
type
PSomeRecord = ^RSomeRecord;
RSomeRecord = record
Value1: Integer;
Value2: Double;
end;
var
i: PSomeRecord;
procedure Test;
begin
Inc(i); // This line increases i with SizeOf(RSomeRecord) bytes, thanks to POINTER_MATH !
end;
Как уже говорили другие авторы: Относительно легко увидеть, что компилятор сделал из вашего кода, открыв:
Представления> Отладка Windows> Процессор Windows> Разборка
Обратите внимание, что параметры компилятора, такие как OPTIMIZATION, OVERFLOW_CHECKS и RANGE_CHECKS, могут влиять на конечный результат, поэтому вам следует позаботиться о том, чтобы настройки были в соответствии с вашими предпочтениями.
Подсказка: в каждом модуле $ INCLUDE файл, который управляет параметрами компилятора, таким образом, вы не потеряете настройки, если ваш .bdsproj или .dproj каким-то образом поврежден. (Посмотрите на исходный код JCL для хорошего примера)