Баги или фича?
Добавлено: 05 июн 2008, 16:44
Всем привет. Заметил тут странные особенности компиляции:
вот такой код даст мессаджи в обоих выражениях:
хотя в других АЯ второй аргумент не вычисляется, если первый аргумент точно определяет результат выражения
и еще вот такой прикол
вышеприведенный код выведет два сообщения - одно пустое, другое 'Some val'. Т.е. значения локальных переменных сохраняются у функции м/у вызовами, а не сбрасываются в значения по умолчанию. Жесть
вот такой код даст мессаджи в обоих выражениях:
Код: Выделить всё
if (true or Message('Whats a f..') = cmOk)
{
}
if (false and Message('Whats a sh..') = cmOk)
{
}
и еще вот такой прикол
Код: Выделить всё
procedure Foo;
var tmpVar;
{
Message(tmpVar);
tmpVar := 'Some val';
}
// Main code
Foo();
Foo();