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 

Leer fichero ini

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

Teniendo puesto el lógico include (#include <inifiles>), tengo este fichero ini:
Cita:
[Datos]
Entorno=C:\DatAfi21\Gia.ini
Acceso=C:\DatAfi21\Acceso
Tablas=C:\DatAfi21\Tablas

que he grabado con este código:
Código:
TIniFile *fIni = new TIniFile(ChangeFileExt(Application->ExeName, ".ini"));
fIni->WriteString("Datos", "Entorno", "C:\DatAfi21\\DatAfi21\\Gia.ini");
fIni->WriteString("Datos", "Acceso" , "C:\DatAfi21\\DatAfi21\\Acceso");
fIni->WriteString("Datos", "Tablas" , "C:\DatAfi21\\DatAfi21\\Tablas");
delete fIni;

Sin embargo si trato de leerlo con este otro código:
Código:
TIniFile *fIni = new TIniFile(ChangeFileExt(Application->ExeName, ".ini"));
cEntorno = fIni->ReadString("Datos", "Entorno", cEntorno);
cAcceso  = fIni->ReadString("Datos", "Acceso" , cAcceso);
cTablas  = fIni->ReadString("Datos", "Tablas" , cTablas);
delete fIni;

Siempre me devuelve cadenas vacías y no entiendo el motivo. Y me da lo mismo hacerlo sobre Builde 6 que sobre Builder XE3.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Hola Angel; Tal y como lo grabas a mi me aparece así:
[Datos]
Entorno=C:DatAfi21\DatAfi21\Gia.ini
Acceso=C:DatAfi21\DatAfi21\Acceso
Tablas=C:DatAfi21\DatAfi21\Tablas
Eso significa que tal vez deberías poner otra barra antes de DatAfi21.
Luego he puesto en el OnClick de un botón esto y me ha funcionado:
Código:

void __fastcall TForm1::Button2Click(TObject *Sender)
{
   TIniFile *fIni = new TIniFile(ChangeFileExt(Application->ExeName, ".ini"));
   String cEntorno = fIni->ReadString("Datos", "Entorno", cEntorno);
   String cAcceso  = fIni->ReadString("Datos", "Acceso" , cAcceso);
   String cTablas  = fIni->ReadString("Datos", "Tablas" , cTablas);
        ShowMessage(cEntorno+"\n"+cAcceso+"\n"+cTablas);
   delete fIni;
}

_________________
¡ADELANTE CON ESTE SUPER FORO!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Tugui escribió:
Hola Angel; Tal y como lo grabas a mi me aparece así:
[Datos]
Entorno=C:DatAfi21\DatAfi21\Gia.ini

Ha sido una errata mía; realmente está guardado en una variable con las dos barras. Probaré lo que me has puesto y te digo.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Después de toda la mañana dando vueltas y probando diferentes códigos he encontardo, más o menos, una solución.
Código:
TIniFile *fIni = new TIniFile(cIniFile);
TStringList *Entorno  = new TStringList();
fIni->ReadSectionValues("Datos", Entorno);

Entorno->Strings[0] = Entorno->Strings[0].SubString(Entorno->Strings[0].Pos("=") + 1, Entorno->Strings[0].Length());
Entorno->Strings[1] = Entorno->Strings[1].SubString(Entorno->Strings[1].Pos("=") + 1, Entorno->Strings[1].Length());
Entorno->Strings[2] = Entorno->Strings[2].SubString(Entorno->Strings[2].Pos("=") + 1, Entorno->Strings[2].Length());
delete fIni;
No es la forma que más me seduce pero no he encontrado otra ya que si trato de hacer esto:
Código:
UnicodeString cEntorno = Entorno->Strings[0].SubString(Entorno->Strings[0].Pos("=") + 1, Entorno->Strings[0].Length());
dentro de la variable me devuelve siempre una cadena vacía.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Hola Angel
Aunque no he probado nada, lo he revisado y te debe funcionar. Me refiero al primer post
Yo hace tiempo tuve un problema similar y me di cuenta que en el archivo ini tenia 2 secciones [DATA]. Al escribir lo hacía en la primera y al leer lo hacía de la segunda

Revisa el archivo o mejor aún, crea uno nuevo y lo pruebas

Saludos
Volver arriba
Ver perfil de usuario Enviar mensaje privado
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.