PDA

Ver la Versión Completa : array multidimensionales


franss
21-09-2008, 22:57:30
Buenas a todos. Ahi va esa, a ver quien es el buen samaritano que me ilumina:



// clase B

type
TSArray= Array [0..31,0..2] of string;

TCadenas= Class
Protected
cp: TSArray;
Public
Constructor Create(Ruta, Separador:String);
Function DevDatos(const X, Y: Integer): Double;
Function TarifaM(const M: Double): Double;
Function TarifaP(const M: Double): Double;
Private
LimX,LimY : Integer;
end;

// calculos



Se accede a esta clase desde otra unidad y hasta ahi todo correcto.
El problema viene cuando intento generalizar la clase y cambiar el tipo de datos a un array multidimensional....
Array of Array of String;

No da ningun error al compilar; pero la cosa es que no carga bien los datos, siendo la clase tanto A como B la misma....( solo que la b evidentemente se tiene que redimensionar para que el array se adapte a los datos que haya)


Alguien me podria decir donde esta el problema??


Un Saludo y gracias

Robert01
21-09-2008, 23:42:46
Hola

Lo siento, creo que entendí mal lo que preguntaban


Saludos

Delphius
22-09-2008, 00:13:51
Buenas a todos. Ahi va esa, a ver quien es el buen samaritano que me ilumina:


Código Delphi [-] (http://www.clubdelphi.com/foros/#) // clase B type TSArray= Array [0..31,0..2] of string; TCadenas= Class Protected cp: TSArray; Public Constructor Create(Ruta, Separador:String); Function DevDatos(const X, Y: Integer): Double; Function TarifaM(const M: Double): Double; Function TarifaP(const M: Double): Double; Private LimX,LimY : Integer; end; // calculos


Se accede a esta clase desde otra unidad y hasta ahi todo correcto.
El problema viene cuando intento generalizar la clase y cambiar el tipo de datos a un array multidimensional....
Array of Array of String;

No da ningun error al compilar; pero la cosa es que no carga bien los datos, siendo la clase tanto A como B la misma....( solo que la b evidentemente se tiene que redimensionar para que el array se adapte a los datos que haya)


Alguien me podria decir donde esta el problema??


Un Saludo y gracias

Hola franss, ¿Podrías aportar más detalles sobre tu problema y/o duda?
No me queda muy claro tu duda ¿Deseas tener una clase que herede de la primera y extienda al array?

Si pudiera conocer con mejores detalles tu problema y tus necesidades te podría ser de mayor ayuda.

Saludos,

franss
22-09-2008, 12:59:00
Buenas de nuevo:

Lo expuesto es solo la interface de una clase que esta en una unidad independiente de la unidad principal. La unidad principal accede a esta clase para conseguir los datos requeridos. La clase lo que hace es leer un archivo de texto y separarlo en lineas y dentro de cada linea separa los parrafor que vienen separados con un separador (;) o cualquier otro; todo esto va incluido en un array multidimensional que es el que utilizamos para un calculo interno. En el metodo Create, se cargan los datos.
Tal y como esta funciona perfectamente la clase; pero el problema es que no es generalizado; es decir si cambiamos las lineas del archivo de texto no coincidiria con lo limites del array expuesto. Lo que pretendo es cambiar la segunda linea por esta otra:
TSArray= Array of Array of string
y dentro pues se va dimensionando el array. La cosa es que Delphi me permite compilarlo sin errores, pero la realidad es que no carga bien los datos en la variable 'cp'.

como es posible que siendo el mismo algoritmo y no tocando ninguna linea de la clase excepto lo del dimensionamiento, no se consiga el mismo resultado????

Lo mismo es una tonteria, pero yo no lo veo.

agradezco vuestra ayuda.


Saludos

Delphius
22-09-2008, 15:26:09
Buenas de nuevo:

Lo expuesto es solo la interface de una clase que esta en una unidad independiente de la unidad principal. La unidad principal accede a esta clase para conseguir los datos requeridos. La clase lo que hace es leer un archivo de texto y separarlo en lineas y dentro de cada linea separa los parrafor que vienen separados con un separador (;) o cualquier otro; todo esto va incluido en un array multidimensional que es el que utilizamos para un calculo interno. En el metodo Create, se cargan los datos.
Tal y como esta funciona perfectamente la clase; pero el problema es que no es generalizado; es decir si cambiamos las lineas del archivo de texto no coincidiria con lo limites del array expuesto. Lo que pretendo es cambiar la segunda linea por esta otra:
TSArray= Array of Array of string
y dentro pues se va dimensionando el array. La cosa es que Delphi me permite compilarlo sin errores, pero la realidad es que no carga bien los datos en la variable 'cp'.

como es posible que siendo el mismo algoritmo y no tocando ninguna linea de la clase excepto lo del dimensionamiento, no se consiga el mismo resultado????

Lo mismo es una tonteria, pero yo no lo veo.

agradezco vuestra ayuda.


Saludos
Hola franss,
Disculpame, aún no termino de comprender el propósito de los arrays. Además no termino de comprender como es que separas el texto linea a linea y dentro de ésta por parrafo.

Te pediría que ofrecieras algo "más visual" para comprender tu idea. Algún ejemplo sencillo.

En la primera lectura de tu post me estaba imaginando emplear la clase TStrings, ya que ésta tiene los métodos suficientes para trabajar con archivos; e incluso separarlos linea a linea en base a un delimitador... Tal vez esta clase te pueda ser de ayuda.
No se, sin comprender mejor tu problema no puedo decir mucho.

Saludos,