Цитата
в качестве первого параметра используем указатель <...> на процедуру
Это не указатель на процедуру, а адрес процедуры. Потому что так реализовано. Цитата
а второй оставляем пустым
Хочешь, я приведу тебе пример, когда тебе понадобится использовать и второй указатель (а не оставлять его пустым)? Ясно же написано: дополнительные данные. Вот попробуй, например, сделать, чтобы при первом вызове процедуры Incr координата X каждой записи, что в списке увеличивалась на 4, а Y - на 8, а при втором вызове - X уменьшалось бы на 3, а Y - увеличивалось на 5. С использованием второго параметра - элементарно (не привлекая глобальных переменных, ибо они - зло)...Цитата
Тоесть мы для вызова ForEachCall используем два лишних указателя
Если ты считаешь заложенную в реализации гибкость "лишней" - тебя ж никто не заставляет использовать это. Напиши свое, естественно, ты сделаешь это гораздо лучше, правда?