 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mar 31 Mar, 2015 9:05 am Asunto: Leer fichero ini |
|
|
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 |
|
 |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Mar 31 Mar, 2015 7:54 pm Asunto: |
|
|
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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mie 01 Abr, 2015 8:28 am Asunto: |
|
|
| 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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mie 01 Abr, 2015 11:27 am Asunto: |
|
|
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 |
|
 |
bosoft Master

Registrado: 23 Oct 2005Mensajes: 342
|
Publicado: Jue 02 Abr, 2015 8:29 am Asunto: |
|
|
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 |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|