Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Ficheros (https://www.clubdelphi.com/foros/showthread.php?t=20951)

leireiresaio 02-05-2005 12:22:59

Ficheros
 
Hola!!!

Tenemos problemas a la hora de hacer un fichero en "Borland C++ Builder 5". No sabemos como meter la información en un fichero. Nos gustaria que nos recomendaseis que tipo de fichero utilizar. No estaria mal que nos mandaseis un trozo de código de ejemplo.

Gracias!!! Un saludo.

Crandel 16-05-2005 08:06:34

Los archivos de escritura son los ofstream , tenes que declarar una variable de ese tipo, por ejemplo:

Código:

ofstream ArchiSal("salida.txt");
un ejemplo con escribiendo bastantes boludeces :D
Código:

ofstream ArchiSal("salida.txt");
string Texto1 = "Hola";
string Texto2 = "Mundo";
int num = 1;
Archi << Texto1 << Texto2 << endl;
Archi << Texto1 << " " << Texto2 << endl;
Archi << num << num++ << endl;
Archi << num << " " << num++ << endl;
Archi << num++ << " " << num << endl;
Archi << Texto1 << num << "\n";
Archi << num++ << Texto2 << endl;

Al final, podes llamar al método close() si queres, igualmente este se llama al destruir la varaible

Para lectura ifstream .

Código:

float PromedioDatos()
{
  float x, suma = 0;
  int cont = 0;
  ifstream Archivo(“Datos.txt”);
  while (!Archivo.eof())
  {
    Archivo >> x;
    suma += x;
    cont++;
  }
  return suma/cont;
}

Espero que te sirva para empesar :p

alt126 20-05-2005 12:32:21

Sabeis si tambien funciona en la version 3??
 
Es que lo estoy probando y no me funciona!!

Gracias

Crandel 20-05-2005 18:31:16

no lo probe esa versión, seguro que en la 5 y 6 funciona.

Si especificas que error te tira, cpaz te pueda ayudar.

mminorm 01-06-2005 20:24:18

Ficheros
 
Prueba este otro codigo, imagino ke estas usando algun tipo de registro, lista enlazada o algo asi:

void nodo::guardar(void)//guarda en un fichero
{
nodo *AUX = NULL;
if (obj.l != NULL)
{
AUX = obj.l;//obj,l es un objeto ke contiene la cabeza de una lista enlazada
ofstream datos("fichero.txt");
if (!datos)
ShowMessage( "No se pudo abrir el archivo");
while (AUX != NULL)
{
//tienes ke declarar una variable por cada dato del registro
char nombre[15];
char apellido1[15];
char apellido2[15];
char cedula[10];
char telefono[15];
char celular[15];
char provincia[15];
StrCopy(nombre, AUX->info.nombre);
StrCopy(apellido1, AUX->info.apellido1);
StrCopy(apellido2, AUX->info.apellido2);
StrCopy(cedula, AUX->info.cedula);
StrCopy(telefono, AUX->info.telefono);
StrCopy(celular, AUX->info.celular);
StrCopy(provincia, AUX->info.provincia);
if (AUX!=NULL)
{
datos.write ((unsigned char *) & nombre, sizeof(nombre));
datos.write ((unsigned char *) & apellido1, sizeof(apellido1));
datos.write ((unsigned char *) & apellido2, sizeof(apellido2));
datos.write ((unsigned char *) & cedula, sizeof(cedula));
datos.write ((unsigned char *) & telefono, sizeof(telefono));
datos.write ((unsigned char *) & celular, sizeof(celular));
datos.write ((unsigned char *) & provincia, sizeof(provincia));
}
AUX = AUX->sig;
}
datos.close();
datos.close();
}
}
void nodo::cargar (void) //carga informacion desdel el fichero
{
persona p;//mi registro de informacion
ifstream datos ("fichero.txt");
obj.l=NULL;//recuerda ke obj.l es la cabeza de mi lista enlazada

if (!datos)
ShowMessage("No se pudo abrir el archivo");
else
{
do
{
//tienes ke cargar la informacion del archivo en cada dato del registro
datos.read ((unsigned char *) & p.nombre, sizeof(p.nombre));
datos.read ((unsigned char *) & p.apellido1, sizeof(p.apellido1));
datos.read ((unsigned char *) & p.apellido2, sizeof(p.apellido2));
datos.read ((unsigned char *) & p.cedula, sizeof(p.cedula));
datos.read ((unsigned char *) & p.telefono, sizeof(p.telefono));
datos.read ((unsigned char *) & p.celular, sizeof(p.celular));
datos.read ((unsigned char *) & p.provincia, sizeof(p.provincia));
if (!datos.eof())
obj.insertar(p);
}
while (!datos.eof());
}
datos.close();
datos.close();
}

espero t sirva, si no t funcionara me podrias decir ke clase de estructura estas utilizando. Estamos en contacto


La franja horaria es GMT +2. Ahora son las 16:45:36.

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