Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   array multidimensionales (https://www.clubdelphi.com/foros/showthread.php?t=60133)

franss 21-09-2008 22:57:30

array multidimensionales
 
Buenas a todos. Ahi va esa, a ver quien es el buen samaritano que me ilumina:


Código Delphi [-]
 
// 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

Cita:

Empezado por franss (Mensaje 315425)
Buenas a todos. Ahi va esa, a ver quien es el buen samaritano que me ilumina:


Código Delphi [-] // 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

Cita:

Empezado por franss (Mensaje 315472)
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,


La franja horaria es GMT +2. Ahora son las 17:41:31.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi