Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Reemplazar texto en un .dfm (https://www.clubdelphi.com/foros/showthread.php?t=51430)

elcigarra 15-12-2007 02:11:46

Reemplazar texto en un .dfm
 
Soy de los dinosaurios que aún desarrollo en D7. La pregunta es la siguiente:

He desarrollado un método para traducir proyectos completos a otro idioma que en resumen hace lo siguiente:

a) Determina los archivos ".pas" y ".dfm" del proyecto
b) Extraigo todas las lineas de texto (previo pasaje del dfm de binario a texto)
b) Lleno una tabla con los Caption, hints, etc, de todos los componentes involucrados... es decir: todo lo que se llena con palabras en el idioma del programador
c) dejando un campo vacío el programador llena cada string de estos con su traducción en otro idioma.

hecho esto tengo una tabla con tres campos y cientos de registros del tipo:

archivo idioma1 idioma2 (este lo lleno a mano)
unit1.pas Cerrar Close
unit1.pas Botón uno Button one
.... etc

Que falta?

Lo que no se hacer es una función que sustituya cada registro de idioma2 por los string que coincidan con idioma1. Puedo imaginarme que con Loadfromfile, sustituir todo y SaveToFile puedo hacerlo con los .pas pero no sé que hacer con los .dfm

Alguien conoce una pieza de código que sustituya texto en un .dfm?

ixMike 15-12-2007 02:29:08

Cita:

Empezado por elcigarra (Mensaje 252790)
Soy de los dinosaurios que aún desarrollo en D7.

¿Lo dices por la antigüedad? Yo aún utilizo D3!



En cuanto a tu problema, hay programas que generan archivos .dfm o que importan datos de ellos, aunque la verdad no estoy puesto en el tema. Si mal no recuerdo el entorno Pascal Develop tiene una opción de "Importar formulario Delphi". Lo que no sé es si es de código abierto (para que le puedas echar un vistazo). Si es así igual en la red tienes la solución.
Además la cuestión de los .dfm es que cambian en cada versión de Delphi (por eso yo no puedo abrir proyectos creados con versiones posteriores :()


Siento no ser de más ayuda.

Saludos.

xEsk 15-12-2007 05:48:00

Cita:

Empezado por ixMike (Mensaje 252794)
¿Lo dices por la antigüedad? Yo aún utilizo D3!



En cuanto a tu problema, hay programas que generan archivos .dfm o que importan datos de ellos, aunque la verdad no estoy puesto en el tema. Si mal no recuerdo el entorno Pascal Develop tiene una opción de "Importar formulario Delphi". Lo que no sé es si es de código abierto (para que le puedas echar un vistazo). Si es así igual en la red tienes la solución.
Además la cuestión de los .dfm es que cambian en cada versión de Delphi (por eso yo no puedo abrir proyectos creados con versiones posteriores :()


Siento no ser de más ayuda.

Saludos.

Sólo por curiosidad, por que usas D3? Por temas de licencias? Proyectos viejos que no se pueden actualizar? Es simple curiosidad, ya que el D3 es muuuy viejo! xD El compilador mismo, no tiene nada que ver con los de hoy dia (del D6 al D7 ya hay mucha diferencia en el compilador... xD).

Saludos.

ixMike 15-12-2007 16:04:39

Cita:

Empezado por xEsk (Mensaje 252806)
Sólo por curiosidad, por que usas D3?

Pues porque es el que tengo legal, y estoy mudándome (o eso intento) al 100% software libre, no me interesa (económicamente) mudarme a una versión nueva. Y para una afición (sí, para mí la programación es una afición ;)) creo que me sirve el que tengo.

¿O es que todos juegan con las nuevas videoconsolas? Yo aún tengo por ahí la SNES, aunque hace cosa de un año que no la uso :D.


Vaya, nos vamos del tema que proponía elcigarra. ¿Alguien puede ayudarle?


Saludos.

rimbener 17-12-2007 12:44:37

Re: Re: Reemplazar texto en un .dfm
 
Hola, fijate que el .dfm es un archivo de texto también por lo tanto podrías realizar el mismo procedimiento que con los .pas, abrilos con el bloc de notas y comprobalo.

Saludos.

ixMike 18-12-2007 15:18:31

Cita:

Empezado por rimbener (Mensaje 253052)
Hola, fijate que el .dfm es un archivo de texto también por lo tanto podrías realizar el mismo procedimiento que con los .pas, abrilos con el bloc de notas y comprobalo.

Saludos.


Hola.

Verás, aunque en Delphi puedas editar un archivo .dfm en modo texto, realemente no son archivos de texto (al menos no en mi versión de Delphi). Y si no, pues prueba a abrirlos con el bloc de notas y comprobarlo.


Saludos.

maeyanes 18-12-2007 15:30:41

Bueno, en las primeras versiones de Delphi los .dfm se guardaban en formato binario, pero en las más recientes (no recuerdo si desde D6 o D7), puedes especificar que los .dfm se guarden en formato de texto plano...

Aun así, Delphi trae una utilidad de línea de comandos para convertir los .dfm de un formato a otro. El nombre no lo recuerdo ahora...



Saludos...

ixMike 18-12-2007 18:11:43

Cita:

Empezado por maeyanes (Mensaje 253268)
Bueno, en las primeras versiones de Delphi los .dfm se guardaban en formato binario, pero en las más recientes (no recuerdo si desde D6 o D7), puedes especificar que los .dfm se guarden en formato de texto plano...

Aun así, Delphi trae una utilidad de línea de comandos para convertir los .dfm de un formato a otro. El nombre no lo recuerdo ahora...



Saludos...

Nunca te acostarás
sin saber algo más ;)

(o algo así, no lo recuerdo bien).


Saludos.

zurdosoft 18-12-2007 23:22:38

Modificar recursos
 
Creo que lo que necesitas, elcigarra, es traducir un programa que puede ser hecho con el programa ya compilado y listo.
Para esto tienes que modificar los recursos.
Consulta la respuesta de seoane en este Tema: http://www.clubdelphi.com:80/foros/s...ad.php?t=38718
En Ejemplo35.zip encontraras una aplicacion que permite modificar un exe desde otro.
Asi cambiando los recursos tendras el programa en otro lenguaje.
Es una idea, espero que te sirva.
Felices Fiestas

Al González 19-12-2007 08:47:17

¡Hola!

Coincido en que una buena opción es manejar cadenas "ResourceString".

Cita:

Empezado por elcigarra (Mensaje 252790)
...Soy de los dinosaurios que aún desarrollo en D7...

¿O sea que la mayoría de los desarrolladores Delphi, al día de hoy, somos unos dinosaurios? :confused:

Tranquilo, Delphi 2007 promete mucho, y probablemente terminará desplazando a Delphi 7 (a la cual extrañaremos por haber sido una versión grande entre las grandes) por estar más completo, pero la cosa lleva su tiempo. Tal vez en el 2009 sea cuando alcance la nueva mayoría. Hay que ser realistas, pero caro, sin dejar de avanzar. Yo en unas semanas comenzaré con Delphi 2007, si el bolsillo me lo permite (o las promesas se cumplen ;)).

Un dino-abrazo.

Al González. :)


La franja horaria es GMT +2. Ahora son las 18:00:05.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi