Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-01-2005
Luli Luli is offline
Miembro
 
Registrado: oct 2004
Posts: 76
Poder: 20
Luli Va por buen camino
Lightbulb arreglo bidimensional

hola, tengo una segunda pregunta, en mi programa necesito recibir datos del ususario y uso TEdit para ello y no sé como guardar los datos del TEdit en un arreglo, en realidad lo que tengo son dos TEdit, en uno se recibe un dato de tipo string y en el segundo uno de tipo integer y necesito guardarlos en un arreglo de dos dimensiones y no sé como hacerlo, esa es la segunda pregunta, muchas gracias nuevamente
Responder Con Cita
  #2  
Antiguo 17-01-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.285
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Un array tiene elementos del mismo tipo, así que deberás guardar dos Strings aunque uno de ellos sea un entero (debes guardarlo convertido); Si deseas guardar el entero, entonces deberías mirar Records.
No acabo de ver claro lo que quieres hacer, pero el cñódigo en sí es sencillo:

Código Delphi [-]
 type
 
   // Debes definir el record 
   TMiRecord = record
     cadena:String;
     Numero: Integer;
   end;
 
 var
   MiArray: array [0..1] of string;  // Array de dos posiciones
   MiRecord:TMiRecord;
 
 begin
   // Si utilizas array sería algo así...
   MiArray[0] := 'primera cadena';
   MiArray[1] := 'Numero como cadena';
   // Si utilizas un record sería algo así...
   MiRecord.cadena := 'primera cadena';
   MiRecord.Numero := 99;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 18-01-2005
Luli Luli is offline
Miembro
 
Registrado: oct 2004
Posts: 76
Poder: 20
Luli Va por buen camino
Lightbulb Otra vez con el arreglo

Hola, bueno no me expliqué bien, lo del arreglo es porque quiero tener una tabla con los datos que introdujo el usuario para usarlos más tarde, estos datos son: el nombre de una variable cualquiera (a, b, w, etc) y su valor (1, 28, 3, etc.) estos datos los da el usuario y para recibirlos utilicé un TEdit.

Lo que no sé es como los guardo en esa tabla, en ese arreglo, ya me habían comentado que tendría que convertir uno de los datos a int y yo escribí este codigo:

Código:
 
const
Longitud=2; 
Altura=3;
type
Horizontal = 1.. Longitud;
Vertical   = 1..Altura;
Tabla	  = Array[Horizontal,Vertical] of Integer;
 
var
  Form3: TForm3;
  contador_variable: integer;
  Variable: String;
  Valor:	Integer;
  i: integer;
  j: integer;
implementation
{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);
begin
if(contador_variable < 3)  //este tres es porque quiero que acepte
 //un numero determinado de variables 
 
then begin
//1.- Se guarda la variable y su valor en la tabla
//2.- Se incrementa el contador porque solo seran tres variables las que se puedan recibir
 
contador_variable:=contador_variable+1;
///////////////////////////////////////////////////////////////////////////////
//SE GUARDA LA VARIABLE Y SU VALOR EN LA TABLA

Variable:= Edit1.Text;
Valor:= StrToInt(Edit2.Text);
 
 
// aqui es donde ya no sé como guardar el nombre de la variable en una celda y su valor en la celda de junto... lo que se me ocurre es algo así:
 
  Tabla[i,j]:= Variable;
  j:=j+1;
  Tabla[i,j]:= Valor; 
//pero no sé si se pueda y otra cosa ¿como imprimo los valores de la tabla en un TEdit, por ejemplo? esto para poder comprobar que se guardaron los datos correctos y en los sitios correctos
 
///////////////////////////////////////////////////////////////////////////////
 
//3.- Se limpia el formulario, listo para recibir otra variable
 ListBox1.Items.Add('		   '+Edit1.Text+'					  '+Edit2.Text);
 //ValueListEditor1.keys[Edit1.Text];

end;
if(contador_variable>3)
then begin
//Mostrar mensaje de que solo se pueden recibir X variables
ShowMessage ('No es posible declarar más variables');

end;
 // Limpiar los edit 1 y 2
 Edit1.Text:= '';
 Edit2.Text:= '';

end;
procedure TForm3.Button2Click(Sender: TObject);
begin
close;
end;
end.

Bueno, a ver si no abrumo con tanta duda, es que no he programado mucho en delphi, solo en turbo c y todo esto es nuevo, muchas gracias
Responder Con Cita
  #4  
Antiguo 18-01-2005
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Hola Luli!

He seguido los hilos que ultimamente has estado escribiendo al respecto de este tema, yo pienso que una buena solución sería utilizar el TValueListEditor para que puedas manejar pares del tipo (Clave-Valor).

Ya respondí a tu pregunta de como usar el componente TValueListEditor en este otro hilo que tú abriste.

http://www.clubdelphi.com/foros/show...5126#post75126

Un saludo.
Responder Con Cita
  #5  
Antiguo 18-01-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.285
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Luli
Hola, bueno no me expliqué bien, lo del arreglo es porque quiero tener una tabla con los datos que introdujo el usuario para usarlos más tarde, estos datos son: el nombre de una variable cualquiera (a, b, w, etc) y su valor (1, 28, 3, etc.) estos datos los da el usuario y para recibirlos utilicé un TEdit.

Lo que no sé es como los guardo en esa tabla, en ese arreglo, ya me habían comentado que tendría que convertir uno de los datos a int y yo escribí este codigo
Éste código tiene algunos errores (y alguno de concepto también).
Lo primero, es que si debes almacenar una cadena y un Integer, el array debe ser de Strings (en lugar de enteros), ya que un entero se puede almacenar como string, pero no al contrario.

Otro error que he visto, es que Tabla lo tienes definido dentro de tipos (type) y no dentro de variables (var) y luego intentas trabajar con el; Si lo defines como Tipo debes definir una variable de ese tipo, y si lo defines como variable puedes usarla directamente.

El código con alguna corrección quedaría así, revísa los cambios:

Código Delphi [-]
 const
   Longitud=2;
   Altura=3;
 type
   Horizontal = 1..Longitud;
   Vertical   = 1..Altura;
 
 var
   Tabla: Array[Horizontal,Vertical] of String;
   Form1: TForm1;
   contador_variable: integer;
   Variable: String;
   Valor:    String;
   i: integer;
   j: integer;
 
 
 implementation
 {$R *.dfm}
 
 procedure TForm1.Button1Click(Sender: TObject);
 begin
   if(contador_variable < 3)  //este tres es porque quiero que acepte
     //un numero determinado de variables
 
     then begin
   //1.- Se guarda la variable y su valor en la tabla
   //2.- Se incrementa el contador porque solo seran tres variables las que se puedan recibir
 
   contador_variable:=contador_variable+1;
   ///////////////////////////////////////////////////////////////////////////////
   //SE GUARDA LA VARIABLE Y SU VALOR EN LA TABLA
 
   Variable:= Edit1.Text;
   Valor:= Edit2.Text;
 
 
   // aqui es donde ya no sé como guardar el nombre de la variable en una celda y su valor en la celda de junto... lo que se me ocurre es algo así:
 
     Tabla[i,j]:= Variable;
     j:=j+1;
     Tabla[i,j]:= Valor;
   //pero no sé si se pueda y otra cosa ¿como imprimo los valores de la tabla en un TEdit, por ejemplo? esto para poder comprobar que se guardaron los datos correctos y en los sitios correctos
 
   ///////////////////////////////////////////////////////////////////////////////
 
   //3.- Se limpia el formulario, listo para recibir otra variable
    ListBox1.Items.Add('           '+Edit1.Text+'                      '+Edit2.Text);
    //ValueListEditor1.keys[Edit1.Text];
 
   end;
 
   if(contador_variable>3)
   then begin
   //Mostrar mensaje de que solo se pueden recibir X variables
   ShowMessage ('No es posible declarar más variables');
 
   end;
 
  // Limpiar los edit 1 y 2
  Edit1.Text:= '';
  Edit2.Text:= '';
 
 end;
 
 
 procedure TForm1.Button2Click(Sender: TObject);
 begin
   Close;
 end;
 
 end.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 20-01-2005
Luli Luli is offline
Miembro
 
Registrado: oct 2004
Posts: 76
Poder: 20
Luli Va por buen camino
Lightbulb un mensaje de error

hola, muchas gracias por la respuesta, me fué de utilidad, pero creo que sigo haciendo algo mal porque cuando corro el programa me manda un error que dice:

raise exception EAccess violation with message Access violation in address 00404322. Read of address FFFFFFF7

bueno algo asi y la supongo que es en la parte de este codigo:

/SE GUARDA LA VARIABLE Y SU VALOR EN LA TABLA
//Numero := StrToInt(Edit.Text);
Variable:= Edit1.Text;
Valor:= Edit2.Text;

Bueno, en esta parte,
porque cuando comento la siguiente linea no me sale el error:

Tabla[i,j]:= Variable;
//j:=j+1;
//Tabla[i,j]:= Valor;


Entonces me imagino que asi no es como se manejan los arreglos en delphi, si es asi agradecería una ayuda en cuando al manejo de éstos, gracias
Responder Con Cita
  #7  
Antiguo 21-01-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.285
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Existe un error al definir el array, ya que empieza en la posición 1 y en ejecución la primera vez que pasa por:

Código Delphi [-]
   Tabla[i,j]:= Variable;

i y j valen 0 (ya que no se han inicializado); De ahí que te "salte" el error de "Access Voilation"; Además para que salga el mensaje de error en el último IF deberías colocar:

Código Delphi [-]
   if(contador_variable >= 3)

El código final quedaría algo así:

Código Delphi [-]
 procedure TForm1.Button1Click(Sender: TObject);
 begin
   if(contador_variable < 3)  //este tres es porque quiero que acepte
     //un numero determinado de variables
 
     then begin
   //1.- Se guarda la variable y su valor en la tabla
   //2.- Se incrementa el contador porque solo seran tres variables las que se puedan recibir
 
   contador_variable:=contador_variable+1;
   ///////////////////////////////////////////////////////////////////////////////
   //SE GUARDA LA VARIABLE Y SU VALOR EN LA TABLA
 
   Variable:= Edit1.Text;
   Valor:= Edit2.Text;
 
 
   // aqui es donde ya no sé como guardar el nombre de la variable en una celda y su valor en la celda de junto... lo que se me ocurre es algo así:
 
     Tabla[i,j]:= Variable;
     j:=j+1;
     Tabla[i,j]:= Valor;
   //pero no sé si se pueda y otra cosa ¿como imprimo los valores de la tabla en un TEdit, por ejemplo? esto para poder comprobar que se guardaron los datos correctos y en los sitios correctos
 
   ///////////////////////////////////////////////////////////////////////////////
 
   //3.- Se limpia el formulario, listo para recibir otra variable
    ListBox1.Items.Add('Var:' + Edit1.Text + '-------Valor:' + Edit2.Text);
    //ValueListEditor1.keys[Edit1.Text];
 
   end;
 
   if(contador_variable>=3)
   then begin
   //Mostrar mensaje de que solo se pueden recibir X variables
   ShowMessage ('No es posible declarar más variables');
 
   end;
 
  // Limpiar los edit 1 y 2
  Edit1.Text:= '';
  Edit2.Text:= '';
 
 end;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #8  
Antiguo 22-01-2005
Luli Luli is offline
Miembro
 
Registrado: oct 2004
Posts: 76
Poder: 20
Luli Va por buen camino
Smile

Hola, gracias por responder, lo probaré, nuevamentegracias por todo, nos vemos luego por aqui
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 12:37:04.


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
Copyright 1996-2007 Club Delphi