Wie du auf das Array zugreifen willst hast du uns ja noch nicht gezeigt.
Sorry, ich übermittle das erste Array-Element als Pointer an die Prozedur und bewege mich mittels inc() durch die Elemente.
Das wesentliche was die Codes unterscheidet sind Zeiger auf verschiedene Records.
Willst du mit den Datentypen Integer, Byte, Currency, Gleitkomma immer das gleiche machen?
Wenn ja müsstes du die ja wahrscheinlich in einen gemeinsamen Datentypen wandeln? Dann über gib deiner Prozedure ein Zugriffsobjekt (Enumerator), den du abhängig vom Datentype erzeugst. Der übernimmt das Ermitteln der Werte aus dem Array und ein evt. wandel des Array-Typen in den von Dir benötigten Typen. Dann kann die Logik deiner Prozedure die die Arbeit erledigt immer gleich bleiben und wird von dem Typen-Chaos nicht behelligt.
Wenn du unterschiedliche Sachen machen möchtest nimm unterschiedliche Prozeduren.