FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Insertar y obtener la fecha de build.
Buenas gente.
Esto es algo que ya deben haber preguntado cuarenta mil veces, pero no he encontrado nada al respecto. Lo que me gustaría hacer es, de alguna manera AUTOMÁTICA, meter en el .EXE la fecha de buildeo. Así en la ventana de Acerca De yo puedo mostrar la versión exacta (ya sé cómo hacer eso) y la fecha de la última compilación. ¿Alguna idea? ¿URL? ¿Consejo? Lo que sea... Miles de gracias. Saludongos. Última edición por Lord Delfos fecha: 21-12-2009 a las 22:54:15. |
#2
|
||||
|
||||
Yo lo hago con esta funcion:
y para usarlo utilizas esto:
__________________
Si robas, roba un beso, si mientes que sea por amor y si engañas que sea a la muerte!! |
#3
|
||||
|
||||
Gracias, afunez2007.
Lo que pasa con este método tuyo es que si la fecha de archivo llega a cambiar (cosa que puede pasar con mucha facilidad) entonces mi ejecutable va a mostrar una fecha incorrecta. Pos eso me interesa algún método que "grabe a fuego" en mi ejecutable la fecha y la hora de compilación. Pero gracias de todos modos. |
#4
|
||||
|
||||
Hay tres fechas que se guardan en el archivo, la de creación, la de última modificación y la del último acceso.
Podrías utilizar la primera, de forma que si el archivo se modifica, cambiará la segunda, pero no la primera. Aquí en mi página tienes un truco de cómo obtener esas tres fechas; Fechas de un fichero (creación, modificación y últ. acceso)
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#5
|
||||
|
||||
Yo uso esto, por si acaso te sirve:
Código:
lbVersion.Caption := 'v'+GetmVersion+ '-'+DateToStr(FileDateToDateTime(FileAge(paramStr(0)))); // ------------------------------------- function GetmVersion: string; var InfoSize, H, RsltLen: Cardinal; VersionBlock: Pointer; Rslt: PVSFixedFileInfo; begin InfoSize := GetFileVersionInfoSize(PChar(Application.ExeName), H); VersionBlock := AllocMem(InfoSize); try GetFileVersionInfo(PChar(Application.ExeName), H, InfoSize, VersionBlock); VerQueryValue(VersionBlock, '\', Pointer(Rslt), RsltLen); Result := Format('%d.%d.%d.%d', [ Rslt.dwProductVersionMS div 65536, Rslt.dwProductVersionMS mod 65536, Rslt.dwProductVersionLS div 65536, Rslt.dwProductVersionLS mod 65536]); finally FreeMem(VersionBlock); end; end; |
#6
|
||||
|
||||
Gracias a todos muchach@s. Pero el problema sigue siendo el mismo. Cualquier fecha que tenga el archivo .exe, sea de creación, acceso o modificación, depende exclusivamente del sistema operativo. Hay ocasiones en las que estas fechas se cambian al pasar de un medio a otro (copia en CD, FTP, etc.) y entonces se me jode todo el sistema...
Teóricamente los ejecutables tienen un campo fecha (que se obtiene con la API GetFileVersionInfo) pero Delphi no lo setea... Habrá que seguir pensando, parece... |
#7
|
||||
|
||||
Cita:
Aunque puede ser que no lo haga y no me haya fijado. |
#8
|
||||
|
||||
Gracias Casimiro, pero sí, la fecha puede modificarse sin querer y FileAge depende de la fecha de creación, así que cualquier modificación a eso... pues fuiste, se te jode el programa.
|
#9
|
||||
|
||||
No entiendo entonces, ¿qué quiéres decir?, que si tengo mi ejecutable y lo copio a otro ordenador, por ejemplo, ya cambia la fecha?
|
#10
|
||||
|
||||
Cita:
Así que, potencialmente hablando, cualquier proceso que "cree" el archivo en un dispositivo de almacenamiento cualquiera, puede modificar la fecha de creación. Es decir, si vos recibís el archivo por FTP, Windows va a crear una nueva entrada de archivo y después copiar el contenido de lo que está recibiendo. Generalmente los datos de fechas son copiados junto con el archivo porque el SO es lo suficientemente inteligente, pero otras veces (y esto está librado a la suerte) no copia nada. De ahí el problema de la fecha. |
#11
|
||||
|
||||
No sé en qué estaba pensando.
¿Y no te vale el "build" para tu propósito?, v1.3.115, p.e.? |
#12
|
||||
|
||||
Sí, el build me viaja. Lo que pasa es que yo quiero mostrar todos los números de versión, junto con la fecha en la que se compiló. Algo así como
"Versión 1.3.4.87. Compilada 12/12/2009 a las 17:34." Digamos que me gustaría que fuera automático el asunto, así no tengo que andar modificando el texto cada vez que compilo la versión "final". Hata ahora solamente puedo hacerlo con los número de versión, pero de la fecha... pues nada. |
#13
|
||||
|
||||
Cita:
Exactamente eso es lo que yo quería, pero no me había fijado en lo de la fecha, estaba tan tranquilo que se guardaba :s |
#14
|
||||
|
||||
¡Sí! ¡Al fin puede hacerlo! Qué hijo de ·$·%$!@. Se me complicó el asunto.
Al final todo fue obra del querido CnWizards, que permite ejecutar un script antes de compilar un proyecto cualquiera. Asi que me hice un script que crea un archivo con las lineas
... usando la función Now, lógicamente, así uno tiene la fecha y hora actual en la que se está corriendo el script. Después agrego un $INCLUDE en mi código para que importe ese archivo y listo. Ahora tengo una constante que tiene la fecha de compilación. Qué bueno, con qué poco uno se pone contento en estos días... Saludos y gracias a todos por los aportes. |
#15
|
||||
|
||||
Bueno, bueno... amigo explica cómo se hace el script ese del cnwizard, porfa
|
#16
|
||||
|
||||
Hmmmm... Parece ser un buen secreto, no sé si darlo gratis...
En fin, la cosa es así: [1] Tener instalado el CnWizards, claro. [2] Vas "Script Wizard\Script Window". [3] Aparece una ventanita. Se hace click en "new". Esto abre una ventana en el IDE de Delphi. [4] Uno escribe el código correspondiente.
y lo guardás en cualquier lado. [5] Vas a "Script Wizard\Script Library". La ventana que aparece te muestra todos los scripts que tengas declarados a la izquierda (probablemente no tengas ninguno). [6] Hacés click en "Add", le ponés algún nombre. Elegís el archivo que acabás de guardar en la TextBox "Filename". [7] Ahora seleccionás fmBeforeCompile en el Treeview de la derecha. Para que el script se corra antes de compilar. [8] Finalmente agregás un $I en tu código para importar el archivo que tiene las constantes:
Lógicamente, dado que el $I importa el código directamente donde se declara, hay que ponerlo en un lugar donde se permita declarar constantes. Y listo. Por supuesto que el script se ejecuta cada vez que se compila cualquier proyecto, así que con cualquier cosa uno sobreescribe el archivo con las constantes. Afortunadamente resulta irrelevante ya que se usa únicamente para "leer" la hora y la fecha. ¿Sé entiende todo esto? El que no entiende, pues pregunte. |
#17
|
||||
|
||||
Gracias por la explicación; Muy interesante...
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#18
|
||||
|
||||
Ya lo he "pirateado" ¿o tiene licencia libre?
|
#19
|
||||
|
||||
Pues yo he tenido un deja vú
El año pasado hice varios de ese estilo, pero vamos, que no es necesario escribir en un fichero externo, cnWizard permite modificar cualquier archivo del proyecto delphi que tengas, de forma que esa constante se podría incluir en una unidad tuya, o incluso que cree un nuevo .pas con la constante y agregue esa unidad al proyecto automáticamente. Si eso... mira este mensaje
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#20
|
||||
|
||||
Entonces, cómo sería, ¿escribiendo en la ventanita que sale al dar a "nuevo script"?
|
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
insertar fecha con ado y Tquery | microbiano | Conexión con bases de datos | 5 | 12-11-2009 19:26:01 |
obtener solo la fecha en formato fecha y sin hora | BlueSteel | SQL | 14 | 09-05-2008 16:42:19 |
Problema insertar fecha | Nomad | SQL | 17 | 17-01-2008 22:50:46 |
Insertar fecha desde NxDatePicker | JcTaztoman | Varios | 0 | 26-09-2007 18:30:18 |
Como insertar fecha en un proyecto | Adonis | Varios | 2 | 18-09-2007 03:52:02 |
|