Берем, скажем, процедуру с тремя параметрами. Эти параметры задаем с помощью трёх функций, работающих со строкой. Во время работы программы функции вызываются в нормальном порядке, а результаты в процедуру возвращаются в обратном. Вот пример:
- Код: Выделить всё
- 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.




