Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-08-2004
agustincs agustincs is offline
Miembro
 
Registrado: ago 2004
Posts: 32
Poder: 0
agustincs Va por buen camino
mantener un archivo en memoria mientras ejecuta la aplicacion

pues resulta que una aplicacion que estoy realizando lleva un archivo en modo texto con ciertos parametros que siendo cambiados por el usuario en tiempo de ejecucion de la aplicacion, peuden cambiar el comportamiento de esta. Por tanto, queria saber alguna manera de bloquear ese archivo mientras el programa esta en ejecucion de forma que los usuarios ni puedan editarlo, ni borrarlo ni sobreescribirlo, vamos, como si el archivo estubiera en memoria y que no permita el s.o. cambiarlo. Una posible forma que pense es abrir el archivo en modo de escritura desde delphi, pero no se si de esta forma lo bloqueare de forma que quede cargado en memoria mientras dure la ejecucion de la aplicacion y naide pueda cambiarlo.
teneis alguna idea? muchas gracias
Responder Con Cita
  #2  
Antiguo 28-08-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
La apertura del archivo, en modo exclusivo debiera funcionar.

¿has tenido algún problema?

hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 28-08-2004
agustincs agustincs is offline
Miembro
 
Registrado: ago 2004
Posts: 32
Poder: 0
agustincs Va por buen camino
y como abro un archivo en modo exclusivo?? perdona por mi ignorancia
Responder Con Cita
  #4  
Antiguo 29-08-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿Y por qué no simplemente lees el archivo en memoria olvidándote del archivo en disco mientras se ejecuta la aplicación? Así los usuarios podrán cambiarlo, borrarlo o quemarlo que a ti no te afectará. Al final de la aplicación lo reescribes de la memoria al disco.

// Saludos
Responder Con Cita
  #5  
Antiguo 29-08-2004
agustincs agustincs is offline
Miembro
 
Registrado: ago 2004
Posts: 32
Poder: 0
agustincs Va por buen camino
pues eso no es mala idea roman,. pero no me vale porque ese archivo lo va a leer la aplicacion que voy a lanzar desde mi programa (esa de la que hablo en otro post que los usuarios parecian hackers ), por tanto no puedo hacer eso, lo que quiero hacer es que los usuarios no puedean cambiarlo miteras esta la otra aplicacion en ejecucion
Responder Con Cita
  #6  
Antiguo 30-08-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Si queres que lo abra la otra aplicación... no podes mantenerlo de modo exclusivo. Si esta otra lo abre para solo lectura... te valdria simplemente tenerlo abierto en modo de escritura.

Te recomiendo que veas la ayuda del procedimiento FileOpen.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #7  
Antiguo 01-09-2004
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Puede abrirlo e indicar que los demas programas solo puedan leerlo, ni borralo ni modificarlo. Para eso yo usaria la funcion CreateFile, ignoro si hay una forma mas sencilla de hacerlo.

Código Delphi [-]
// Esta variable contiene el identificador del archivo
var
  hFile: THandle;

// Esta instruccion abre el archivo y evita que otros lo modifiquen
hFile:= CreateFile('nombre.txt',GENERIC_READ,FILE_SHARE_READ,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);

// Esta otra lo cierra
CloseHandle(hFile);
Responder Con Cita
  #8  
Antiguo 01-09-2004
agustincs agustincs is offline
Miembro
 
Registrado: ago 2004
Posts: 32
Poder: 0
agustincs Va por buen camino
muchas gracias seoane, es justo lo que buscaba
Responder Con Cita
  #9  
Antiguo 01-09-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cool

Cita:
Empezado por seoane
ignoro si hay una forma mas sencilla de hacerlo.
No se si mas sencilla... pero alternativa:

La función FileOpen, ya mencionada. En su ayuda están los modos de apertura, que te permiten el mismo resultado. Supongo que al final de cuentas hacen, sobre windows, una llamada al api, como vos, pero tienen la ventaja, de estar a mas alto nivel, con lo que sobrepasaria con menos problemas cambios de plataforma (.NET, linux, etc), pues es el compilador quien se encarga de hacer la traducción final a la plataforma en la que se compile.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 17:39:11.


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
Copyright 1996-2007 Club Delphi