Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-03-2015
andres_89 andres_89 is offline
Miembro
 
Registrado: dic 2013
Posts: 46
Poder: 0
andres_89 Va por buen camino
Exportar datos ListView a .txt

Hola amigos,

Tengo un problema para exportar los datos de un Listview a un archivo txt, ya cree el archivo txt con este codigo:

Código:
AnsiString nombrearchivo = "Reporte";
creat(nombrearchivo.c_str(),1);

           ofstream write_archive(nombrearchivo.c_str()) ;
           write_archive << ("Lista de alumnos: \n");       
           write_archive.close();
Pero no puedo hacer hasta el momento el código para agregar los datos de las columnas "'Nombre" y "Apellidos" a ese archivo de texto, considerando que pueden haber "n" filas, ya que en un día se pueden registrar 2 alumnos, al día siguiente 100 alumnos, etc. y mi reporte es diario con la cantidad de alumnos registrados ese dia.

Un ejemplo de mi ListView es este:


Espero me puedan ayudar, gracias de antemano.

Saludos.
Responder Con Cita
  #2  
Antiguo 23-03-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola andres_89.

Ejemplo usando STL:
Código PHP:
#include <fstream>
...
{
  
AnsiString nombrearchivo "Reporte.txt";
  
std::ofstream ofs;
  
TListViewlv static_cast<TListView*>(ListView1);

  
ofs.open(nombrearchivo.c_str(), std::ofstream::out std::ofstream::app);
  for(
int i 0lv->Items->Counti++)
    
ofs << (lv->Items->Item[i]->Caption "," +
            
lv->Items->Item[i]->SubItems->Text).c_str();
  
ofs.close();


Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 24-03-2015
andres_89 andres_89 is offline
Miembro
 
Registrado: dic 2013
Posts: 46
Poder: 0
andres_89 Va por buen camino
Se muestra codificado

Hola ecfisa,

gracias por tu respuesta, pero al momento de ejecutarlo y guardarlo, me lo guarda en hexadecimal, se ve puros numeros, creo que tiene algo que ver con el guardado en el código.

Estaré jugando por acá haber si me sale.

Saludos.
Responder Con Cita
  #4  
Antiguo 24-03-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Andres.

Usando los datos que mostraste para el ListView (nombres, apellidos) el código funciona correctamente.

Codigo de prueba:
Código PHP:
#include <fstream>
void __fastcall TForm1::btnSaveClick(TObject *Sender)
{
  
AnsiString nombrearchivo "C:\\tmp\\Reporte.txt";
  
std::ofstream ofs;
  
TListViewlv static_cast<TListView*>(ListView1);

  
ofs.open(nombrearchivo.c_str(), std::ofstream::out std::ofstream::app);
  for(
int i 0lv->Items->Counti++)
    
ofs << (lv->Items->Item[i]->Caption "," +
            
lv->Items->Item[i]->SubItems->Text).c_str();
  
ofs.close();

  
// mostrar el contenido del archivo
  
Memo1->Lines->LoadFromFile(nombrearchivo);

Resultado:


Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 24-03-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola de nuevo.

No se si es requisito que uses STL, pero con VCL tal vez te resulte mas simple:
Código PHP:
void __fastcall TForm1::btnSaveClick(TObject *Sender)
{
  
AnsiString nombrearchivo "C:\\tmp\\Reporte.txt";
  
TListViewlv static_cast<TListView*>(ListView1);

  
TStringssl = new TStringList;
    for(
int i 0lv->Items->Counti++)
    
sl->Add(lv->Items->Item[i]->Caption "," +
            
lv->Items->Item[i]->SubItems->Text);
  
sl->SaveToFile(nombrearchivo);
  
delete sl;
  
// mostrar el contenido del archivo
  
Memo1->Lines->LoadFromFile(nombrearchivo);

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 24-03-2015
andres_89 andres_89 is offline
Miembro
 
Registrado: dic 2013
Posts: 46
Poder: 0
andres_89 Va por buen camino
Listo

Hola ecfisa,

Justo estaba pensando hacerlo con puntero porque no logre hacer funcionar tu primer código en embarcadero c++.
Tu último código en VLC me funciono bien.
El anterior con STL me funciono bien en C++ Builder pero me mostraba digitos en hexadecimal en embarcadero C++.
El de VLC me ejecuto normal en ambos compiladores, me parece que fuera ya un tema de los compiladores que en embarcadero hay que configurar en sus opciones, por ahora me quedo con el STL, ya que tengo que trabajarlo en embarcadero por el tema que ya se compro la licencia.

De verdad te agradesco mucho por tu tiempo y ayuda ecfisa.

Saludos.
Responder Con Cita
  #7  
Antiguo 30-03-2015
andres_89 andres_89 is offline
Miembro
 
Registrado: dic 2013
Posts: 46
Poder: 0
andres_89 Va por buen camino
Actualizar sin eliminar

Cita:
Empezado por ecfisa Ver Mensaje
Hola de nuevo.

No se si es requisito que uses STL, pero con VCL tal vez te resulte mas simple:
Código PHP:
void __fastcall TForm1::btnSaveClick(TObject *Sender)
{
  
AnsiString nombrearchivo "C:\\tmp\\Reporte.txt";
  
TListViewlv static_cast<TListView*>(ListView1);

  
TStringssl = new TStringList;
    for(
int i 0lv->Items->Counti++)
    
sl->Add(lv->Items->Item[i]->Caption "," +
            
lv->Items->Item[i]->SubItems->Text);
  
sl->SaveToFile(nombrearchivo);
  
delete sl;
  
// mostrar el contenido del archivo
  
Memo1->Lines->LoadFromFile(nombrearchivo);

Saludos
Hola ecfisa, habrá algún parámetro que me permita guardar esos datos pero sin borrar el archivo ya creado anteriormente?, por ejemplo el dia lunes creo el reporte "ejemplo.txt" y el siguiente lunes actualizo a ese mismo reporte los nuevos datos, mostrandome los antiguos y nuevos datos, ya que con el código que se tiene ahora, cada vez que guardo los datos me borra los anteriores y me sobrepone los nuevos en el mismo archivo.

Saludos.
Responder Con Cita
  #8  
Antiguo 30-03-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola andres_89.

Tal vez te resulte mejor unificar ambas acciones en una función:
Código PHP:
void appendData(TListView *lv, const AnsiString &fileName,
  const 
bool &append=true) {

  
TStringssl = new TStringList;

  if (
append && FileExists(fileName))
    
sl->LoadFromFile(fileName);

  for(
int i 0lv->Items->Counti++)
    
sl->Add(lv->Items->Item[i]->Caption "," +
            
lv->Items->Item[i]->SubItems->Text);

  
sl->SaveToFile(fileName);
  
delete sl;

El parámetro append dictamina si se agregan o sobreescriben los datos, por defecto(omisión) se agregan.

Ejemplo de uso:
Código PHP:
void __fastcall TForm1::btnAppendClick(TObject *Sender)  {
  
appendData(ListView1"C:\\tmp\\Reporte.txt"CheckBox1->Checked);

Para el ejemplo uso como argumento el estado de la propiedad Checked de un TCheckBox. Marcado agrega, si no sobreescribe.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 30-03-2015 a las 23:27:42.
Responder Con Cita
  #9  
Antiguo 31-03-2015
andres_89 andres_89 is offline
Miembro
 
Registrado: dic 2013
Posts: 46
Poder: 0
andres_89 Va por buen camino
Gracias ecfisa,

es un excelente código y queda para el foro para otros, ya que no encontre ni uno sobre este tema en los foros de builder, ya pude terminar con esta parte, te lo mil agradesco.

Saludos.
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
Agregar datos a Listview ZayDun Varios 7 13-09-2013 01:00:12
exportar/importar listview a excel weke Servers 8 18-08-2013 09:38:06
savedialog para exportar listview a bmp? BioStudio Varios 1 24-11-2012 08:14:58
Mostrar Datos En ListView calogero Varios 1 30-12-2006 03:24:25
Extraccion de datos de un LISTVIEW ebreton31 Varios 2 22-11-2006 23:05:46


La franja horaria es GMT +2. Ahora son las 12:51:53.


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