Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-04-2008
sac sac is offline
Miembro
 
Registrado: abr 2007
Posts: 109
Poder: 18
sac Va por buen camino
Gran lío con el stringlist y el TstringList

Hola gente, tengo un problema que debería ser sencillo de resolver.
estoy trabajando por primera vez con un stringgrid.
Me dijeron que tengo que usar la clase TstringList que es donde se puede usar el loadfromfile y el savetofile ya que el stringgrid no cuenta con esas opciones.
Ahora ¿como hago para abrir desde el Tstringgrid hacia el Stringgrid y guardar desde el Stringgrid al Tstringlist todo con la extension txt? porque yo quiero hacer un XXX.savetofile(savedialog1.filename) o un XXX.loadfromfile(opendialog1.filename) pero no abre ni guarda nada de lo que hago en el stringlist. (XXX sería el Tstringgrid que cree y declaré en el private).

Ojala puedan ayudarme.
Responder Con Cita
  #2  
Antiguo 22-04-2008
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Cita:
Empezado por sac Ver Mensaje

Me dijeron que tengo que usar la clase TstringList que es donde se puede usar el loadfromfile y el savetofile ya que el stringgrid no cuenta con esas
Pero por supuesto que las tiene incorporadas, aunque el enfoque es más orientado a un arreglo multidimencional.

Un stringgrid posee los miembros Columns y rows que son de tipo TStringGrid.
Cada Rows implemente por consecuenta el método LoadFromFile y SaveToFile.

Saludos,
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #3  
Antiguo 22-04-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola sac, tienes que recorrer todo tu StringGrid e ir almacenando lo que tienes de alguna forma.

Ejemplo:

Código Delphi [-]
var
 i,j      :Integer;
 Linea  : String;
 slFile  : TStringList;
begin
 slFile := TStringList.Create;
 for i:=0 to StringGrid1.RowCount-1 DO
  begin
   Linea:='';
   for j:=0 to StringGrid1.ColCount-1 DO
    begin
     Linea:=Linea+' '+StringGrid1.Cells[i,j];
    end;
    slFile.Add(Linea);
  end;
 slFile.SaveToFile('C:\Archivo.txt');

tu lo mejoras.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #4  
Antiguo 22-04-2008
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Creo que si lo que quieres es salvar en un archivo de texto y luego recuperarlo en un dbgrid, una buena alternativa y mucho menos liada es hacerlo mediante un ClientDataSet. Este tiene metodos para salvar como XML y para cargar desde XML.
Responder Con Cita
  #5  
Antiguo 22-04-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
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
En mi página web, en la sección de ejemplos, también tienes uno titulado: "Color y alineación en celdas de un StringGrid"; A parte de lo que comenta el título, tiene el código para leer datos de un fichero de disco; Está con código fuente, así que puedes descargarlo, verlo y probarlo con detalle.
__________________
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 22-04-2008
sac sac is offline
Miembro
 
Registrado: abr 2007
Posts: 109
Poder: 18
sac Va por buen camino
1,2,3, probando, probando

Gracias a todos por sus respuestas. Estoy probando con algunas sugerencias que me dieron. Cuando encuentre la respuesta correcta les aviso desde ya gracias de nuevo.
Responder Con Cita
  #7  
Antiguo 22-04-2008
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Cita:
Empezado por juanelo Ver Mensaje
Creo que si lo que quieres es salvar en un archivo de texto y luego recuperarlo en un dbgrid, una buena alternativa y mucho menos liada es hacerlo mediante un ClientDataSet. Este tiene metodos para salvar como XML y para cargar desde XML.

Esa opción si me gusta, Pero con ADO, por que si mal no recuerdo con el ClientDataSet debes cargar el Xtd o me equivoco?
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #8  
Antiguo 22-04-2008
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Cita:
Empezado por poliburro Ver Mensaje
Esa opción si me gusta, Pero con ADO, por que si mal no recuerdo con el ClientDataSet debes cargar el Xtd o me equivoco?
No, el ClientDataSet es indpendiente de la base de datos que uses (de hecho puede ser inclusive XML la fuente de datos). Para usarlo como "contenedor" de datos basta crearle los campos al ClientDataSet y posteriormente en tiempo de ejecucion (se puede en tiempo de diseño) se crea con CreateDataSet, y ya de ahí lo tenemos como un dataset con toda su funcionalidad (insert, delete, update, etc ..). Pero si los datos los obtienes de una fuente de datos como un BD, entonces para eso está el DataSetProvider que es el encargado de "resolver" de donde vienen los datos (y tambien a donde se graban), en pocas palabras, es un capa que te independiza de la fuente de los datos.
Responder Con Cita
  #9  
Antiguo 22-04-2008
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Cita:
Empezado por juanelo Ver Mensaje
No, el ClientDataSet es indpendiente de la base de datos que uses (de hecho puede ser inclusive XML la fuente de datos). Para usarlo como "contenedor" de datos basta crearle los campos al ClientDataSet y posteriormente en tiempo de ejecucion (se puede en tiempo de diseño) se crea con CreateDataSet, y ya de ahí lo tenemos como un dataset con toda su funcionalidad (insert, delete, update, etc ..). Pero si los datos los obtienes de una fuente de datos como un BD, entonces para eso está el DataSetProvider que es el encargado de "resolver" de donde vienen los datos (y tambien a donde se graban), en pocas palabras, es un capa que te independiza de la fuente de los datos.

Igual que ADO. :P, puedes cargar Xml como un Dataset sin estar conectado necesariamente a una base de datos.
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #10  
Antiguo 22-04-2008
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Cita:
Empezado por poliburro Ver Mensaje
Igual que ADO. :P, puedes cargar Xml como un Dataset sin estar conectado necesariamente a una base de datos.
La verdad es que nunca he usado ADO asi que si tu dices que se puede, pues magnifico, otra alternativa.
Responder Con Cita
  #11  
Antiguo 22-04-2008
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Cita:
Empezado por juanelo Ver Mensaje
La verdad es que nunca he usado ADO asi que si tu dices que se puede, pues magnifico, otra alternativa.

De hecho no solo puedes cargar Xml como Datasets sin conexión, sino que puedes ir más allá, puedes mantener un Dataset devuelto por la base de datos aún despúes de haber cerrado la conexión (Permitiendote ahorrar recursos). Te permite además obtener más de un Dataset a la vez.

Una chulada ADO pues :P.
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #12  
Antiguo 22-04-2008
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Cita:
Empezado por poliburro Ver Mensaje
De hecho no solo puedes cargar Xml como Datasets sin conexión, sino que puedes ir más allá, puedes mantener un Dataset devuelto por la base de datos aún despúes de haber cerrado la conexión (Permitiendote ahorrar recursos). Te permite además obtener más de un Dataset a la vez.

Una chulada ADO pues :P.
Se me hace que ADO le copió a MIDAS , además de poder hacer eso que mencionas, los ClientDataSet manejan tipos de campo "especiales" como los agregados, que pueden ser usados para llevar la sumatoria (por ejemplo) de determinada columna, y se van actualizando automaticamente, de hecho pueden ser usados por niveles, es decir, puedes manterner las sumatorias de todos los registros de manera categorizada. Esto sin contar por supuesto con el imprecindible ApplyUpdates, que aplica cambios a la base de datos de manera "atomica". Puedes mantener relaciones mestro detalle y pueden ademas tener campos de tipo DataSet, es decir, dataset anidados. Espectacular.
Responder Con Cita
  #13  
Antiguo 23-04-2008
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Cita:
Empezado por juanelo Ver Mensaje
Se me hace que ADO le copió a MIDAS , además de poder hacer eso que mencionas, los ClientDataSet manejan tipos de campo "especiales" como los agregados, que pueden ser usados para llevar la sumatoria (por ejemplo) de determinada columna, y se van actualizando automaticamente, de hecho pueden ser usados por niveles, es decir, puedes manterner las sumatorias de todos los registros de manera categorizada. Esto sin contar por supuesto con el imprecindible ApplyUpdates, que aplica cambios a la base de datos de manera "atomica". Puedes mantener relaciones mestro detalle y pueden ademas tener campos de tipo DataSet, es decir, dataset anidados. Espectacular.
jajaja Quién le copió a quien? jajajajja

Exactamente eso puede hacer ADO, Ejemplo, La base de datos te devuelve un Dataset, Lo mantienenes en memoria despúes de cerrar la conexión agregas valores o realizas modificaciones y puedes entonces replicar las operacipones contra la base de datos estableciendo nuevamente la conexión.

Los campos calculados, por supuesto que los soporta ADO, los campos de tipo DAtaset por igual, aunque pierden sentido al poder manejar múltiples datasets sin necesidad de que sean campos. Sino instancias de ADo datasets.

A que origenes puedes conectar ADO?, pues imagina, va desde un csv hasta un Db2 corriendo en AS/400 (Ahora ISeries), pasando por muchos motores como Oracle, Mysql, MsSql, DataFlex, Access, Dbase, FoxPro, PostGress, Interbase, Etc, Incluyendo archivos de tipo Xml, Xls, xlsx.

En fin, cuando de establecer conexión con motores de bases de datos se trata, yo me quedo con ADO. (Para arquitecturas de más de dos capas, pues, dependerá de la tecnología a usar (SOAP, COM, DCOM, COM+, ETC). No me cierro a midas :P)
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #14  
Antiguo 23-04-2008
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Cita:
Empezado por poliburro Ver Mensaje
jajaja Quién le copió a quien? jajajajja

Exactamente eso puede hacer ADO, Ejemplo, La base de datos te devuelve un Dataset, Lo mantienenes en memoria despúes de cerrar la conexión agregas valores o realizas modificaciones y puedes entonces replicar las operacipones contra la base de datos estableciendo nuevamente la conexión.

Los campos calculados, por supuesto que los soporta ADO, los campos de tipo DAtaset por igual, aunque pierden sentido al poder manejar múltiples datasets sin necesidad de que sean campos. Sino instancias de ADo datasets.

A que origenes puedes conectar ADO?, pues imagina, va desde un csv hasta un Db2 corriendo en AS/400 (Ahora ISeries), pasando por muchos motores como Oracle, Mysql, MsSql, DataFlex, Access, Dbase, FoxPro, PostGress, Interbase, Etc, Incluyendo archivos de tipo Xml, Xls, xlsx.

En fin, cuando de establecer conexión con motores de bases de datos se trata, yo me quedo con ADO. (Para arquitecturas de más de dos capas, pues, dependerá de la tecnología a usar (SOAP, COM, DCOM, COM+, ETC). No me cierro a midas :P)
No te habrás equivocado y estarás usando MIDAS? ...
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Query vs. StringList MaMu Conexión con bases de datos 11 13-03-2008 02:30:53
Comportamiento extraño en StringList MaMu Varios 7 19-06-2007 19:07:07
Problema con StringList MaMu Varios 2 26-05-2007 21:40:45
Recorrer un StringList bustio Varios 2 27-02-2005 19:50:21
Limite del StringList victork_py Varios 8 11-05-2004 22:19:11


La franja horaria es GMT +2. Ahora son las 07:08:54.


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