Aunque se pudiese realizar una asignacion directa, seria algo ineficiente porque el programa tendria igualmente que copiar los datos de una variable a otra .
La ventaja de usar directamente los datos de los arrays es que es muy rapido no se necesita nunca copiar esos arrrays de un lado a otro ya estan en memoria en su sitio una vez cargado el ejecutable.
Si necesitas la maxima eficiencia, tendrias que trabajar con punteros, aunque se puede ocultar la complejidad de usar punteros definiendo y utilizando una clase que facilite el acceso a los datos.
Todo depende de si esos arrays cambian el numero de columnas y/o filas. Si esos arrays tienen el mismo numero de columnas y filas, lo mas rapido y eficiente es usar un puntero a un array para devolver los datos, ejemplo:
Código Delphi
[-]
type
ALineas= array [0..1023,0..4] of double;
PLineas= ^ALineas;
function proc_L_72_F_32(ns:integer; CC:String): PLineas
begin
if (nS = 1) AND (cC = '1V') then
Result := @L_72_F_32_1_1V
else if (nS = 1) AND (cC = '2V') then
Result := @L_72_F_32_1_2V
else if (nS = 1) AND (cC = '3V') then
Result := @L_72_F_32_1_3V
end if
end;
function test;
va
Ptr: PLineas;
begin
Ptr:= proc_L_72_F_32( ... );
Ptr^[0,3];
Ptr^[1,2];
Ptr^[2,3];
end;
Si los arrays tienen numero de filas variables, el problema es que en un array estatico no se sabe a posteriori cuantas filas tiene asi que o se usa alguna otra constate que nos lo diga (usando un tipo record por ejemplo que almacena tanto el array como el numero de filas) o se crea una ultima fila "en blanco" con algun valor numerico que nunca pueda salir en los datos reales y que marque el final.
Código Delphi
[-]
L_72_F_32_1_3V: array [0..3,0..4] of double =
(
( 1,2,3,4,1 ),
( 2,3,4,5,3 ),
( 2,3,3,4,8 ),
( 2,2,3,4,9 ),
( 0,0,0,0,0 ) );
Si el numero de filas y columnas varía luego es un pelin mas complejo, si realmente necesitas un sistema con todo variable (filas y columnas) , indicalo e intentare poner un ejemplo.
Saludos