Inicio > Visual Basic > avleyva > Mantener un archivo en ejecucion desde visual basic

Mantener un archivo en ejecucion desde visual basic

Experto:
Usuario:
Fecha: 21/07/2008
Valoración: (4,00 sobre 5) Categoría: Visual Basic
25/01/2008
byway, usuario preguntando en Visual Basic
Usuario
Hola, experto... estoy haciendo una aplicacion que me lee datos de un archivo desde visual basic 6.0, pero necsito saber como mantener en ejecucion tal archivo... haber si me dejo entender ... algo como si fuese un archivo de word que cuando lo abres no puedes eliminarlo ni cambiarle el nombre mientras este abierto, o tambien como si fuese una base de datos de access ke cuando esta en consulta no se puede modificar el nombre ni eliminarlo pues algo asi necsito hacer pero con un archivo de donde me leera la informacion, puesto ke por el momento toda la informacion esta dentro de la aplicacion, y como veran no seria necsario hacer tal cosa pero el detalle es que tengo ke actualizar la informacion asi ke tengo ke adicionarlo y que mejor solo reemplazando el archivo de la data y ya no estaria volviendo a compilar la aplicaion con la nueva informacion.

cualkier sugerencia y ayuda es bienvenida...

Salu2.
19/02/2008
byway, experto respondiendo en Visual Basic
Experto
Que tal Byway.
 
Antes que nada te ofrezco una disculpa por no contestar con anticipación, pero estuve fuera por causas de fuerza mayor. Ojala que aún te sirva mi respuesta.
Programáticamente Visual Basic no puedes proteger muchos archivos contra escritura o borrado, solo algunos de ellos, por ejemplo puedes abrir una base de datos de Access en modo exclusivo y entonces nadie podrá borrar o abrir el archivo al mismo tiempo que tú.
Con otros archivos como por ejemplo .txt, .dat, etc., no puedes hacer lo mismo, por lo una sugerencia sería crear un archivo temporal, por ejemplo a través del API de Windows. A continuación un fragmento de código para crear un archivo temporal en el directorio temporal del sistema operativo:
Private Declare Function GetTempPath Lib "kernel32" _
         Alias "GetTempPathA" (ByVal nBufferLength As Long, _
         ByVal lpBuffer As String) As Long
Private Declare Function GetTempFileName Lib "kernel32" _
         Alias "GetTempFileNameA" (ByVal lpszPath As String, _
         ByVal lpPrefixString As String, ByVal wUnique As Long, _
         ByVal lpTempFileName As String) As Long
Dim sTmpPath As String * 512
Dim sTmpName As String * 576
Dim nRet As Long
nRet = GetTempPath(512, sTmpPath)
If (nRet > 0 And nRet 0 Then
        CreateTempFile = Left$(sTmpName, InStr(sTmpName, vbNullChar) - 1)
    End If
End If
Una vez creado el archivo temporal, lee tu archivo original y escribe su contenido en el temporal, trabaja en éste último todo lo que desees y al final sobre escribe el archivo original con el contenido de tu archivo temporal. De esta manera no importará si otra persona abre tu archivo original y cambia su contenido, así como tampoco importará si lo borra.
Espero que esta sugerencia te sea de utilidad y que de ser así, aún estés en tiempo de implementarla.
Saludos.
21/07/2008
byway, usuario preguntando en Visual Basic
Usuario
gracias .. ya solucione este impase hace tiempos ... y estuve un tiempo alejado y no respondi ...
la solucion simple ke use fue abrir el archivo con open y no cerrarlo hasta cuando cerraba la aplicacion ..
pero esto de crear archivo temporal si ke me suena interesante para otras ideas ke tengo.
Enlaces patrocinados