Kurze Erklärungen dazu vllt. noch:
1. Der Doppelpost war unbeabsichtigt und ist gemeldet. Die
DP hatte ein kleines Problem gehabt...
2. Wenn du in der Parameterliste ein "array of single" schreibst, dann definierst du hier den Typ des Parameters, aber keinen Namen für diesen Typ. Man kann es sich so vorstellen, dass sich der Compiler das intern als TArrayOfSingle1 vermerkt. Wenn du nun in main.pas auch einen solchen Typ bei der Variable deklarierst, dann weiß der Compiler nicht, dass dies auch der gleiche Typ sein soll, weil du diesen auch hier direkt bei der Variablendeklaration mit deklarierst. Dadurch ist es für ihn ein neuer Typ (da hier ja neu definiert), also (beispielhaft), interner Name TArrayOfSingle2. Damit sind es für ihn unterschiedliche Typen und somit nicht gleich und somit nicht aufrufbar.
Abhilfe schafft hier diese Deklaration. Damit deklarierst du den Typ und gibst ihm einen eindeutigen Namen. Dadurch das du diesen nun bei beiden Dingen verwendest, ist es für den Delphi Compiler auch eindeutig der gleiche Typ.
Dieses Verhalten legt der Delphi Compiler grundsätzlich bei solchen "inline" Deklarationen mit dynamischen Arrays zu Tage. Klingt komisch, ist aber so...