program TestTry;
{$APPTYPE CONSOLE}
uses
Windows, Dialogs;
var
T: integer;
i: integer;
procedure Delay;
var
i: integer;
s: extended;
begin
try
s := sin(1);
except
ShowMessage('WTF?');
// ShowMessage('W T F ?');
Halt;
end;
end;
begin
T := GetTickCount;
while T = GetTickCount do;
T := GetTickCount;
for i := 0 to 9999999 do Delay;
i := GetTickCount - T;
WriteLn(i);
ReadLn;
end.
Все проверки убрал, отладчик выключил, оптимизацию включил.
В таком виде у меня выводит 2534-2544
Однако, если раскомментировать строчку со вторым сообщением, то он вдруг выводит 2834-2854.
Если добавить туда ещё строчку ShowMessage('W T F ?'), то он выведет 2613
Откуда берётся такая разница?
И как вообще устроен этот блок на самом деле?