Hola,
Creo que el problema estriba en que hay que declarar el tipo en cuestión dentro de la cláusula "interface" (para que esté disponible en otras unidades que añaden aquella donde se declare el tipo) o en la cláusula "implementation". Y, según tú mismo sabes, no puede declararse en otro lugar. Así pues:
Código Delphi
[-]
unit Main;
interface
uses
type
TMyArray: array of integer;
La declaración de "TMyArray" está fuera de "interface", pero, pareciera que también queda fuera de "implementation". Debería quedar algo como esto:
Código Delphi
[-]
unit Main;
interface
type
TMyArray: array of integer;
uses
O bien:
Código Delphi
[-]
unit Main;
interface
uses
implementation
type
TMyArray: array of integer;