 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
_Tugui Invitado
|
Publicado: Jue 22 May, 2003 5:34 pm Asunto: ficheros .lng ¿cómo? |
|
|
¿Alguien podría orientarme como hacer uso de ficheros .lng en mi aplicación?
Al seleccionar una u otra opción cargar un archivo de lenguaje u otro.
Gracias. |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Vie 23 May, 2003 12:55 pm Asunto: Ficheros .lng |
|
|
Por lo que yo he visto se trata de ficheros de una estructura similar a los .ini, así que usando el comando GetPrivateProfileString entiendo que no has de tenr problemas. Ahora bien, planteáte si te merece la pena la cantida de código necesario para redefinir el idioma de los controles: un GetPrivateProfileString y su correspondiente asignación. Por ejemplo:
| Código: | char cLectura[100] = "\0";
GetPrivateProfileString("SECCION 1", "Control 1", "Por defecto", cLectura, 25, cFichero.lng);
Label1->Caption = AnsiString(cLectura); |
Y esto para todos los controles que definas en cada uno de los formaularios. ¿Te merece la pena? _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
_Tugui Invitado
|
Publicado: Vie 23 May, 2003 1:53 pm Asunto: |
|
|
Gracias Angel por tu tiempo:
No conocía la función GetPrivateProfileString así que ahora ya he aprendido una cosa más y cuando la pruebe ya te diré cosas.
Tienes toda la razón cuando dices que hay que pensarse bién si vale la pena o no ir escribiendo el código para cada control de la aplicación toda vez que si se tratara de un programa de gran envergadura podría resultar un "trabajo de xinos", pero en este caso al tratarse de una aplicación sencilla y pequeña tal vez lo intente.
Gracias de nuevo y hasta otra . |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Lun 26 May, 2003 7:57 am Asunto: Ficheros .lng |
|
|
Esas instrucciones te valen para ficheros del tipo .ini y similares. Por ejemplo, para poner un fichero de este tipo donde se ejecuta el programa:
Para crear el fichero yo lo haría así:
| Código: | cIdioma = ExtractFilePath(Application->ExeName) + "Fichero.lng";
WritePrivateProfileString(NULL, NULL, NULL, cIdioma.c_str()); |
Las entradas se crean con la misma instrucción WritePro...:
| Código: | WritePrivateProfileString("Zona", "Entrada", "Valor", cIdioma.c_str()); |
Siendo:
| Cita: | Zona » El área del fichero donde se va a guardar. En los ficheros de tipo INI son las etiquetas entre corchetes.
Entrada » La clave a guardar, que estos ficheros va a la izquierda del igual.
Valor » El de la clave.
cIdioma » El fichero. |
Para rescatar estos valores se usa GetPrivateProfileString:
| Código: | GetPrivateProfileString("Zona", "Entrada", "Por defecto", "Valor" , Longitud, cIdioma.c_str()); |
Siendo:
| Cita: | Zona, Entrada y Valor » Lo mismo que en la definición anterior.
Por defecto » Es el valor que tomará entrada si no existe en el fichero.
Longitud » Como son variables de tipo char hay que indicar cuantos bits hay que leer. No pasa nada si se ponde de más porque leerá hasta el pirmer final de línea que haya. |
_________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
_Tugui Invitado
|
Publicado: Lun 26 May, 2003 4:13 pm Asunto: |
|
|
Muuuuuchas gracias Ángel, creo que voy entendiendo, me he puesto manos a la obra y antes de meterme en la aplicación definitiva he querido provar haciendo un experimento, pero no me funciona del todo, te voy a poner el código y también el fallo que me dá, a ver qué te parece:
En el fichero .LNG está lo siguiente:
[Seccion 1]
1=Inserció de dades
2=Inssertar
3=Llenguatge
4=Per defecte (Castellà)
5=Català
y en el OnClick de un botón :
char cLectura[100] = "\0";
GetPrivateProfileString("Seccion 1", "1", "Por defecto", cLectura, 25, "catala.ini");
Button2->Caption = AnsiString(cLectura);
Mi objetivo es que al pulsar el botón el caption del mismo cambie a "Inserció de dades" pero lo único que consigo es que se cambie a "Por defecto". Me parece que me estoy pasando algo por alto pero no acierto a adivinarlo.
Te agredecería un cable . |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mar 27 May, 2003 7:12 am Asunto: Ficheros .lng |
|
|
¿Como has llamado el fichero donde cargas los literales? Tal cual has puesto el código, el fichero debe llamarse catala.ini, y además ha de encontrarse en la misma carpeta que el ejecutable. Lo del valor por defecto (en tu caso Por defecto) se estable si no existe el fichero catala.ini o no existe la Seccion 1 o no existe la entrada 1 de esa sección.
De todas formas, y al margen de que evalues alguna de estas circunstancias, no le encunetro demsiado sentido a que se cambie el idioma al pulsar el botón; lo más lógico es que se cambie al crearse el formulario. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
_Tugui Invitado
|
Publicado: Mar 27 May, 2003 9:35 am Asunto: |
|
|
Ciertamente Ángel el idioma se va a cambiar en otro sitio lo de ponerlo ahora al pulsar un botón es sólo para hacer pruebas con esta función.
Y te confirmo los siguientes extremos:
- El fichero se llama catala.ini.
- Se halla en la misma carpeta del ejecutable.
- La Seccion 1 existe.
- La entrada 1 existe.
Pero aún así sigue sin funcionar .
He estado mirando en la ayuda del builder la información sobre todos estos parámetros y dice exactamente lo que tu me has enseñado por eso no entiendo como sigo con problemas.
Lejos de parecer pesado lo único que pretendo es aprender, aprender y aprender...
Gracias de nuevo. |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mar 27 May, 2003 10:59 am Asunto: ¡Lo encontré! |
|
|
¡Sí! ¡Por fin! He debido probar como 10 veces con el mismo código que has puesto y al final me he dado cuenta de cual era el fallo: el nombre del fichero DEBE INCLUIR de forma obligatoria la vía de acceso. Con este código a mi me ha funcionado:
| Código: | AnsiString cFichero = ExtractFilePath(Application->ExeName) + "catala.ini";
char cLectura[100] = "\0";
GetPrivateProfileString("Seccion 1", "1", "Por defecto", cLectura, 25, cFichero.c_str());
Button1->Caption = AnsiString(cLectura);
|
y me sale el texto del botón en catalán (Inserció de dades).
Por cierto: regístrate que muchas veces será más comodo mandar correos que estar cargando el foro. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
_Tugui Invitado
|
Publicado: Mar 27 May, 2003 11:33 am Asunto: |
|
|
POR FIIIIIIIIINNN !!! , Aleluyaaaaaaa !!! , eres un fenómeno Ángel. Soy asiduo a este foro y no dudes en que si algún día puedo hecharte un cable lo haré aunque con el nivel que tienes dudo que te haga falta .
Por cierto me registré desde el primer día pero nunca me deja entrar con mis datos por eso siempre entro como invitado. .
Bueno Ángel, lo dicho, ha sido un placer tratar contigo, muchas gracias y hasta otra . |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| 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.
|