Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Acceso a fichero de texto

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Acceso a fichero de texto Responder citando

Hola

Podéis decirme como puedo acceder a un fichero ya creado, y que contiene una única línea como esta:

WIDTH = 720_HEIGHT = 480_

Lo que quiero es conseguir el valor numérico para WIDTH y HEIGHT,en cada caso para poder utilizarlos como enteros.

Nota:Los guiones son espacios en blanco

GRAAAAAAACIAS
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Hola, lo primero decirte que me parece más adecuado separar la información en distintas líneas, hará más flexible tu fichero de texto y te permitirá añadir o eliminar información.

En segundo lugar recomendarte usar un TIniFile, está preparado para ello (aunque no sé si en futuras versiones de Windows se eliminará del API, ya que se está sustituyendo este tipo de información en ficheros INI por el Registro).

Una forma sencilla de leer el fichero sería usando un TStringList, ya que posee el método LoadFromFile. Si tienes el nombre del fichero en el AnsiString NombreFichero:

Código:
  int posicion1, posicion2;
  DatosINI = new TStringList;
  DatosINI->LoadFromFile(NombreFichero);

  try
    {
    //La variable linea no es necesaria, pero el código queda más legible
    AnsiString linea = DatosINI->Strings[1];

    //Buscamos el = y el siguiente espacio
    posicion1 = linea.Pos("=");
    posicion2 = linea.Pos(" ");
    VariableWIDTH = linea.SubString(posicion1 + 1, posicion2 - posicion1).ToInt();
    //Eliminamos la información ya leída
    linea = linea.SubString(posicion2 + 1, linea.Length());

    //Buscamos el = y el siguiente espacio
    posicion1 = linea.Pos("=");
    posicion2 = linea.Pos(" ");
    VariableHEIGHT = linea.SubString(posicion1 + 1, posicion2 - posicion1).ToInt();

    //...
    }

  catch(...)
    {
    ShowMessage("El fichero de inicio está dañado");
    }

  delete DatosINI;


No lo he probado (lo he hecho sobre la marcha), pero debería funcionar. Suerte.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Me ha venido muy bien Responder citando

Me ha servido de mucho tu respuesta y a la vez he aprendido que hay dos métodos para acceder a ficheros: Tinifiles y TStringList.


Hasta pronto
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Hola

No te engañes, TIniFile es para trabajar con arichivos INI, no es generico para archivos de texto. En el caso de TStringList no estas trabajando con el archivo de texto sino con su contenido, simplemente lo cargas en un StringList con lo que puedes utilizar el contenido del archivo pero no trabajas directamente sobre el archivo.

Si lo que quieres es trabajar sobre un archivo tanto para leer, crear o modificar su contenido utiliza el objeto TFileStream.
_________________
Salu2
KAYETANO
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Si lo que quieres es trabajar sobre un archivo tanto para leer, crear o modificar su contenido utiliza el objeto TFileStream.[/quote]

Ya sabía que los Tinifiles deben tener una estructura determinada para
poder trabajar con ellos, pero la verdad es que son más cómodos a la hora de acceder a su contenido.

De momento sólo necesito acceder a los ficheros para leer su contenido, pero ahora sé que también puedo usar TFileStream para cualquier tipo de operación sobre ficheros.

GRAAAAAAAAACIAS
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.