Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   FireMonkey (https://www.clubdelphi.com/foros/forumdisplay.php?f=50)
-   -   c++ Builder (Android) :Guardar/leer Matriz de enteros usando TFileStream (https://www.clubdelphi.com/foros/showthread.php?t=96319)

Drummer 29-07-2023 12:01:48

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.

escafandra 30-07-2023 15:06:49

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.


La franja horaria es GMT +2. Ahora son las 22:43:10.

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