Всё началось с того, что я обратил внимание на то, что стандартная процедура Val в случае ошибки перевода "портит" предыдущее значение результата.
Ладно, думаю, напишу свою процедуру, которая не занимается бессовестной порчей данных. Но тут возник вопрос: в оригинальной процедуре тип результата явно не задаётся: "Procedure Val (const S : string; Var V; var Code : word);"
Как же процедура определяет тип переменной?
Сейчас вышел из положения, написав на каждый необходимый тип данных по отдельной процедуре, но хочется сделать универсальное решение.