Nombre de archivo temporal

03/11/2004 - 23:46 por Willser F. González C. | Informe spam
Hola Grupo,

Tengo una DLL que debe llevar un LOG de sus acciones, pero necesito que
cuando el último archivo de LOG supere un tamaño determinado, entonces se
genere un nuevo archivo de LOG con un consecutivo numérico que no exista.

Lo he intentado con la función _tempnam("C:\\", g_csLogFileName), pero
siempre me lo crea en la carpeta apuntada por TMP, y esta variable de
entorno no la puedo eliminar ya que es utilizada por otras aplicaciones. O
puedo deshabilitar esta variable de entorno sólo para la DLL?. Pues en la
ayuda dice que si no exites esta variable o el path a la que apunta,
entonces se tendría en cuenta el directorio especificado en el primer
parámetro de esta función, en este caso "C:\\".

La idea es que me cree el archivo en una carpeta particular. O será que
existe alguna función API o algo más de C++ que me ahorre hacer un ciclo
verificando qué nombre de archivo se puede utilizar?.

Gracias.

Willser F.
willser@latinmail.com
 

Leer las respuestas

#1 Willser F. González C.
04/11/2004 - 00:31 | Informe spam
Como suele suceder, después de la duda se encuentra la respuesta, pero me
surge un inconveniente:

La función API correspondiente es:

UINT GetTempFileName(
LPCTSTR lpszPath,
LPCTSTR lpszPrefix,
UINT uUnique,
LPTSTR lpszTempFile
)

GetTempFileName(Path, "NombreFijo", 0, TempFileName);

Pero siempre me genera el consecutivo en Hexadecimal, y sólo me toma las
tres primeras letras del Prefijo, es decir, "Nom". Así que el nombre final
sería por ejemplo: "Nom8DC.tmp", el siguiente sería: "Nom8DD.tmp".

Cómo podría tener el temporal con el nombre completo del prefijo + el
consecutivo numérico?.

El tercer parámetro (uUnique) es un poco confuso, se puede hacer algo con
este parámetro.

Willser F.

Preguntas similares