procedure Foo;
var tmpVar;
{
Message(tmpVar);
tmpVar := 'Some val';
}
// Main code
Foo();
Foo();
вышеприведенный код выведет два сообщения - одно пустое, другое 'Some val'. Т.е. значения локальных переменных сохраняются у функции м/у вызовами, а не сбрасываются в значения по умолчанию. Жесть
по 1-му RTFM, здесь просто оптимизация не включена, на дельфи можно добиться точно такого же результата, если включить соответствующую опцию компиляции.
по 2-му опять же RTFM, вам ни кто не гарантирует, что локальные переменные будут снова инициализироваться "пустым" значением (опятьже можно сослаться на паскаль/дельфи). Вообще надо взять за обязательное правило инициализировать переменные.
к примеру, такой пример может вас завести очень далеко
function getsum: Double;
{
var Result: double;
Result++;
getsum := Result;
}
a := getsum; //скорее всего 1
a := getsum; //скорее всего 2
a := getsum; //скорее всего 3
...
Max_Fin
Где включить оптимизацию самому?
в каком месте f..g мануала про все особенности можно прочитать Ged
Спасибо. Я тоже думаю что так быть не должно
что-то было насчет перегрузки всего фейса - vipprogr посмотрите "Реализация объектных интерфейсов". Да и можно параметр предусмотреть заранее - для указания типа обработки - и по нему сделать ветвление в одной и той же функции.