Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Como puedo identificar si un fichero ya esta abierto

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Como puedo identificar si un fichero ya esta abierto Responder citando

Necesito saber como puedo o que funcion debo usar para identificar si un fichero esta abierto por otra aplicacion.

La situacion es la siguiente, tengo varios ejecutables que escriben registros en lineas de texto en un mismo archivo concurrentemente.

Despues de hacer muchas pruebas llegue a la conclusion de que el S.O. permite abrir un mismo archivo a varias aplicaciones en modo append, escritura para añadir pero solo una aplicacion puede escribir al mismo tiempo.

Pero en la practica me encontré en un cliente en el que se intercalaban datos escritos por varios ejecutables que acceden a la vez.

La clase que uso es ofstream, y escribo siempre el buffer de una vez.

Gracias, la verdad es que me urge un poquito encontrar una solucion fiable y si puede ser sencilla.

Gracias.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

No he usado nunca este elemento, pero leyendo la ayuda de ofstream, más concretamente de basic_ofstream, habla de una función isopen(); no sé si te valdrá. Por otra parte se me ocurre usar las funciones try...catch.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

no lo he probado, pero creo que esa funcion solo sirve para comoprobar si tu has abierto el fichero con ofstream::open() pero no para saber si el sistema operativo mantiene el fichero ocupado por otra aplicacion.


Hay un programa que a mi me gusta mucho, se llama unlocker que cuando tratas de hacer una operacion con un archivo que esta cojido por otro programa es capaz de "unlockarlo" (liberarlo) para que tu puedas realizar alguna operacion con el en ppio no permitida como podria ser mover el fichero o borrarlo.

Unlocker es capaz de identificar que aplicación mantiene abierto que fichero, yo no necesito tanto, solo saber si el fichero esta abierto por otra aplicación.

Evidentemente podria probar a borrarlo o a moverlo para ver si está ocupado pero eso no me sirve.

try catch tampoco sirve porque no salta ninguna excepcion.

Gracias, espero mas respuestas porfavor.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

solucion

f = new TFileStream("fichero.txt",fmShareExclusive|fmOpenReadWrite);
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
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


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.