Ver Mensaje Individual
  #14  
Antiguo 05-11-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Reputación: 0
coso Va por buen camino
Hola,

desde la ayuda de delphi

Cita:
Open array parameters allow arrays of different sizes to be passed to the same procedure or function. To define a
....
When you pass an array as an open array value parameter, the compiler creates a local copy of the array within the routine’s stack frame. Be careful not to overflow the stack by passing large arrays.
probablemente llegaba un momento en el que tanto tu array como la copia petaban la pila.

Haciendo esto

Código Delphi [-]
type ExtArray = array of Extended;
...
procedure Graficar(e : ExtArray);
begin
//
end;
 
procedure Hacer;
var
     i : cardinal;
     e : ExtArray;
begin
     Randomize;
     SetLength(e, 200000);
     for i:=0 to 200000-1 do
         e[i] := GenerarRandomico;
     graficar(e);
     ShowMessage('Listo');
end;

funciona.

PD : alguien sabe como acceder al valor de un puntero a lo 'array', pues he probado

Código Delphi [-]
graficar(@arraygrande)
..
 
procedure Graficar (P : PExtended)
var   
      i : integer
begin
        for i := 0 to 200000-1 do
        label1.caption := Formatfloat('0.00',extended(p)[i]^;
end;

que tendria que ser la manera, y no

Última edición por coso fecha: 05-11-2008 a las 12:21:22.
Responder Con Cita