Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-07-2023
Drummer Drummer is offline
Miembro
 
Registrado: jul 2022
Posts: 18
Poder: 0
Drummer Va por buen camino
c++ Builder (Android) :Guardar/leer Matriz de enteros usando TFileStream

hola

Estoy Intentando Guardar y leer matrices de enteros usando TFileStream de la siguinente manera:

Guardar Matriz (no me da errores..)

Cita:
int **Matriz;

Matriz = new int *[10];

for(int i=0;i<10;i++)
{
Matriz[i] = new int[100];
}

// TFileStream *file;

UnicodeString PathFree = System::Ioutils::TPath::GetSharedDocumentsPath()+"/";
AnsiString NomArch =PathFree + "Prueba2.prq";

TFileStream *file = new TFileStream(NomArch, fmCreate);

for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 100; j++)
{
Matriz[i][j] = j;
file->Write(Matriz[i][j], sizeof(int));

}
}

FileClose(file->Handle);
Leer Matriz :

Cita:
int **Matriz;

Matriz = new int *[10];

for(int i=0;i<10;i++)
{
Matriz[i] = new int[100];
}

UnicodeString PathFree = System::Ioutils::TPath::GetSharedDocumentsPath()+"/";
AnsiString NomArch =PathFree + "Prueba2.prq";

TFileStream *file = new TFileStream(NomArch, fmOpenRead);

for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 100; j++)
{
file->Read(Matriz[i][j],sizeof(int));
}
}

FileClose(file->Handle);
Me da error en la linea
Cita:
file->Read(Matriz[i][j],sizeof(int))
no reconoce read como metodo de Tfilestream.

Que es lo que hago mal. Gracias.

Nota: no quiero usar ifstream.
Responder Con Cita
  #2  
Antiguo 30-07-2023
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Tanto TFileStream::Write como TFileStream::Read admiten como primer parámetro un puntero y tu le pasas un entero. No compila.


Esta es la solución:
Código PHP:
file->Write(&Matriz[i][j], sizeof(int)); 

Ten en cuenta que será más eficiente si haces:
Código PHP:
  TFileStream *file = new TFileStream(NomArchfmCreate);
  
// WRITE
  
for(int i 03i++){
    for(
int j 0100j++){
      
Matriz[i][j] = j;
    }
    
file->Write(Matriz[i], 100*sizeof(int));
  }
  
delete file;  // NO TE OLVIDES DE DESTRUIR TU OBJETO
//*****************************
  
  // READ
  
TFileStream *file = new TFileStream(NomArchfmOpenRead);
   for(
int i 03i++){
    
file->Read(Matriz[i], 100*sizeof(int));
  }

  
delete file;   // NO TE OLVIDES DE DESTRUIR TU OBJETO 



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
Ayuda con archivos binarios usando TFileStream Eze32 OOP 2 04-06-2013 16:18:07
Pasar como parametro una matriz de enteros ivanloco Varios 5 17-06-2008 01:00:53
Manejo enteros tipo short con TFileStream elcaracas C++ Builder 0 31-08-2005 16:24:05
Leer enteros de 32-bits en ficheros binarios elcaracas C++ Builder 2 08-04-2005 21:46:54
Guardar matriz? danytorres Varios 1 27-10-2003 04:10:23


La franja horaria es GMT +2. Ahora son las 20:50: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