Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: Haddd en 31 de Enero de 2004, 11:10:09 PM

Título: Como Añadir La Feca Y Hora Al Compilar
Publicado por: Haddd en 31 de Enero de 2004, 11:10:09 PM
 Vereis, yo tengo esto:

CXString CHaddd::VersionDelMotor()
{
   return CXString(_T("Haddd 1.0 (31 Enero 2004 23:05)"));
}


Y cada vez que hago una nueva versión, debo cambiar la fecha y la hora.

¿Existe algún opción en VStudio.Net para que me ponga el solito la fecha de compilación?

Algo así:

CXString CHaddd::VersionDelMotor()
{
   return CXString(_T("Haddd 1.0 ()")+DATE_TIME_STRING);
}
Título: Como Añadir La Feca Y Hora Al Compilar
Publicado por: Zaelsius en 31 de Enero de 2004, 11:37:46 PM
 Efectivamente existen tales macros. He mirado en la ayuda de VS.NET para pegar la sección, pero no sé que coj##@~ le pasa que no lo encuentra. Así que te pongo un enlace que he encontrado en google:

http://h30097.www3.hp.com/docs/base_doc/DO...TE/DOCU_084.HTM

Pongo aquí lo más interesante:
Citar
8.8.1 The __DATE__ Macro

The __DATE__ macro evaluates to a string literal specifying the date on which the compilation started. The date has the following format:

"Mmm dd yyyy"

The names of the months are the same as those generated by the asctime library function. The first d is a space if dd is less than 10. For example:

printf("%s",__DATE__);

The value of this macro remains constant throughout the translation unit.
8.8.2 The __FILE__ Macro

The __FILE__ macro evaluates to a string literal specifying the file specification of the current source file. For example:

printf("file %s", __FILE__);

8.8.3 The __LINE__ Macro

The __LINE__ macro evaluates to a decimal constant specifying the number of the line in the source file containing the macro reference. For example:

printf("At line %d in file %s", __LINE__, __FILE__);

8.8.4 The __TIME__ Macro

The __TIME__ macro evaluates to a string specifying the time that the compilation started. The time has the following format (the same as the asctime function):

hh:mm:ss

For example:

printf("%s", __TIME__);

The value of this macro remains constant throughout the translation unit.
Título: Como Añadir La Feca Y Hora Al Compilar
Publicado por: Loover en 01 de Febrero de 2004, 12:28:08 AM
 No sé si es lo que buscas pero puedes usar la función time:


// Archivo
mCout = new ofstream ("debug.log", ios::out);

// Tiempo
time_t mT;
time (&mT);
struct tm *mPetm = localtime (&mT);

// Fecha
char *mDs [7] = {"Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sabado"};
char *mMs [12] = {"Enero","Febreo","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"};
 
*mCout << "[Debug.log]:" << " (";

// Fecha
*mCout << mDs [mPetm->tm_wday] << ", " << mPetm->tm_mday << " de " << mMs [mPetm->tm_mon] << " del " << mPetm->tm_year+1900 << ")" << endl << endl;


Da como resultado algo del estilo de:
Citar[Debug.log]: (Sabado, 31 de Enero del 2004)
Título: Como Añadir La Feca Y Hora Al Compilar
Publicado por: Haddd en 01 de Febrero de 2004, 12:56:28 AM
 Genial Zaelsius, es así!!  (ole)


s.Formato(_T("Haddd 1.0 (%s %s)"),__DATE__,__TIME__);
Título: Como Añadir La Feca Y Hora Al Compilar
Publicado por: BeRSeRKeR en 01 de Febrero de 2004, 01:17:47 AM
Cita de: "Loover"No sé si es lo que buscas pero puedes usar la función time
Loover, creo que lo que quería Haddd era la fecha de compilación, no la de creación del log...

Saludos.
Título: Como Añadir La Feca Y Hora Al Compilar
Publicado por: Loover en 01 de Febrero de 2004, 11:27:07 AM
 Ah, ok :)
Título: Como Añadir La Feca Y Hora Al Compilar
Publicado por: tamat en 01 de Febrero de 2004, 02:50:06 PM
 Pero esto me plantea una duda:

Si pones  string fecha = __DATE__; al compilar eso se expande y queda como string fecha = "1-2-04"; pero dado que por lo general muchos archivos solo se compilan cuando se produce un cambio entonces probablemente la fecha que aparecerá será la de la ultima vez que ESE archivo se compilo, y si dicho archivo está en una librería entonces aparecerá una fecha erronea ya que por lo general al compilar solo se compilan unos pocos archivos (a no ser que hagas rebuild all).

¿Controla eso el compilador? O es necesario poner esa macro solo en el archivo más bajo de la jerarquía para asegurarse que siempre se recompila y se procesa la macro?
Título: Como Añadir La Feca Y Hora Al Compilar
Publicado por: BeRSeRKeR en 01 de Febrero de 2004, 04:35:27 PM
 En la documentación dice que __DATE__ y __TIME__ especifican la fecha y la hora de la última compilación del archivo al que hace referencia. De forma que habrán casos en los que ocurra lo que dice tamat. Si el archivo de código del log no se recompila en cada compilación de proyecto, el resultado no será el esperado.

Saludos.
Título: Como Añadir La Feca Y Hora Al Compilar
Publicado por: tamat en 01 de Febrero de 2004, 08:40:08 PM
 Y ya que hablamos de macros una duda más, existe alguna macro que retorne un valor unico? algo semejante a una hash de la hora del sistema, es para el tema de los RTTIs, para que cada clase tenga un metodo que retorne un valor unico que sirva para identificar clases, gracias.
Título: Como Añadir La Feca Y Hora Al Compilar
Publicado por: jpastor en 01 de Febrero de 2004, 08:56:59 PM
 Lo más normal es que una combinacion de __FILE__ y __LINE__ sea única, lo que no sabria decirte es como luego identificarlas.
Título: Como Añadir La Feca Y Hora Al Compilar
Publicado por: fiero en 02 de Febrero de 2004, 01:33:03 AM
 Y ya puestos en el tema, ¿hay alguna forma de hacer que la versión del exe se incremente en cada compilación? Me refiero a que muchos programas tienen una versión tipo: 2.0.4.2456 o del tipo 2.0.4 build 2456  El último número imagino que hace referencia al número de compilación, pero no creo que cada vez que el programador compile vaya al editor de recursos a cambiar el numero de versión ¿o si?

saludos
Título: Como Añadir La Feca Y Hora Al Compilar
Publicado por: jpastor en 02 de Febrero de 2004, 03:38:56 PM
 Si usas dev-cpp tiene una opción para eso, en opciones de proyecto (ALT+P), pestaña de información (la última).
Título: Como Añadir La Feca Y Hora Al Compilar
Publicado por: fiero en 02 de Febrero de 2004, 08:13:20 PM
 Perdón, se me olvidó comentar que uso VC 6

un saludo
Título: Como Añadir La Feca Y Hora Al Compilar
Publicado por: Juan Mellado en 02 de Febrero de 2004, 09:26:48 PM
Hola a todos,

fiero, mírate esto:
http://www.codeguru.com/devstudio_macros/B...crementer.shtml

Utiliza macros de Visual C++, añadiendo código al evento Application_BeforeBuildStart

Saludos

P.D. Mírate los comentarios de la página, el código original tenía errores que corrigieron luego
Título: Como Añadir La Feca Y Hora Al Compilar
Publicado por: fiero en 03 de Febrero de 2004, 01:21:56 AM
 Gracias Juan, es justo lo que buscaba

un saludo