Wie Waldteufel es schon geschrieben hat. Der Grund: immer wenn Du schreibst:
array of Char wird intern ein neuer Typ dafür deklariert. So hast Du am Ende bei der Procedure den Typ
ArrayOfChar_1 und bei der Deklaration Deiner Variable
ArrayOfChar_2. Das sind zwei, nicht zueinander kompatible Typen. Daher musst Du den vorher einmal deklarieren und Delphi weiß, dass Du immer vom gleichen Typen "redest".
...
...