| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
tyloya Master

Registrado: 20 Ago 2002Mensajes: 175
|
Publicado: Mie 30 Oct, 2002 1:59 pm Asunto: Acceso a fichero de texto |
|
|
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 |
|
 |
Enrique Master


Registrado: 13 Ago 2002Mensajes: 261Ubicación: La Vila Joiosa (Alacant)
|
Publicado: Jue 31 Oct, 2002 12:14 am Asunto: |
|
|
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 |
|
 |
tyloya Master

Registrado: 20 Ago 2002Mensajes: 175
|
Publicado: Jue 31 Oct, 2002 9:59 am Asunto: Me ha venido muy bien |
|
|
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 |
|
 |
KAYETANO Ens

Registrado: 04 Sep 2002Mensajes: 37
|
Publicado: Jue 31 Oct, 2002 10:42 am Asunto: |
|
|
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 |
|
 |
tyloya Master

Registrado: 20 Ago 2002Mensajes: 175
|
Publicado: Jue 31 Oct, 2002 11:53 am Asunto: |
|
|
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 |
|
 |
|