Берем, скажем, процедуру с тремя параметрами. Эти параметры задаем с помощью трёх функций, работающих со строкой. Во время работы программы функции вызываются в нормальном порядке, а результаты в процедуру возвращаются в обратном. Вот пример:
- Код: Выделить всё
var
a:string;
i:integer;
function f1(b:string):integer;
begin
inc(i);
writeln('f#',i);
f1:=ord(b[1]);
writeln(chr(f1));
delete(a,1,1);
writeln
end;
procedure p1(a,b,c:integer);
begin
writeln(chr(a));
writeln(chr(b));
writeln(chr(c))
end;
begin
i:=0;
readln(a);
p1(f1(a),f1(a),f1(a));
readln
end.
Вводим строку 'abc'
На экране видим:
f#1
a
f#2
b
f#3
c
{то есть функции вызываются в правильном порядке, но потом:}
c
b
a
{то есть процедура берет их в обратном.}
Очень, знаете ли, обидная и труднообнаруживаемая проблема.
Компилятор 2.6.2.