Mantener un archivo en ejecución desde visual basic

Estoy haciendo una aplicación que me lee datos de un archivo desde visual basic 6.0, pero necesito saber como mantener en ejecución 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 también como si fuese una base de datos de access que cuando esta en consulta no se puede modificar el nombre ni eliminarlo pues algo así necesito hacer pero con un archivo de donde me leerá la información, puesto que por el momento toda la información esta dentro de la aplicación, y como verán no seria necesario hacer tal cosa pero el detalle es que tengo que actualizar la información así que tengo que adicionarlo y que mejor solo reemplazando el archivo de la data y ya no estaría volviendo a compilar la aplicación con la nueva información.
Cualquier sugerencia y ayuda es bienvenida...

3 Respuestas

Respuesta
1
Si estas abriendo ese archivo desde una aplicación VB y no haces el .Close del archivo se comporta como quieres.
Uhm no me había percatado de eso... pero ahora me surge una duda como mantener la información del archivo cargado en memoria .. osea si lo abro y lee la información y lo mantiene en memoria o no lo mantiene porque si es así tendría que ponerle un timer para que cierto tiempo haga lo mismo... pues no se si me explico bien, lo que necesito es que la información se mantenga en memoria y al pasar eso el archivo no podrá ser modificado ni eliminado... algo así como si fuese una data de un antivirus que siempre esta activo osea cargado en memoria mediante su aplicación principal... y sobre lo que mencionas si no le doy close al archivo abierto por mi aplicación ya sea solo texto pues nunca probé eso .. hice que me leyera pero después de eso cuando lo tenia abierto podía eliminar el archivo del disco rígido y aun mantenía la información en la aplicación pero como mencionas si le daba close y por eso no lo mantiene en ejecución ...
Bueno probare tu sugerencia... y sobre lo que te mencione de hacer que este archivo de información que solo sera texto en forma binaria o texto plano se comporte como la info de un antivirus osea actualizable reemplazándolo con más info que me sugieres para hacer tal cosa... había pensado en ponerlo como dll y cuando la aplicación se ejecute lo primero que haría es llamar ala dll pero como hacerlo ya que no se mucho sobre dll si tuviese alguna info sobre el tema o ayuda me seria de mucha utilidad ...
Saludos.
Si abres el archivo con el parámetro Append, le puedes ir agregando al final lo que quieras y se mantiene la información que tenia antes .
Respuesta
1
Perdón que hasta ahora te responda, pero el trabajo de sistemas es bastante absorbente.
Pues mira quiero suponer que estás trabajando con un archivo de texto verdad, lo que podrías hacer es que cuando lo abras desde que arrancas la aplicacíon y no cerrarlo hasta que acabes de usar tu programa, ahora si lo que quieres es que aunque no esté el programa funcionando de todas formas quede protegido el archivo es que arranques tu programa junto con windows a modo de agente lo etndrías que agregar usando API's al registro de arranque de windows y minimizarlo a la bandeja de sistema de tal forma que no estorbe con una ventana y para que aparezca tu programa como un ícono en la bandeja de sistema en lugar de una ventana en la barra de tareas también necesitas utilizar API's
Open FileName For Input As #num
    ' operaciones con el archivo
Close #num
Y como te decía etndrías que utilizar la función Open para abrirlo y una ves abierto no lo podrán borrar ni hacerle cambio alguno hasta que utilices la función Close.
Ojalá me puedas contestar para saber si entendí bien tú pregunta y entonces poderte ayudar más sobretodo si decides hacer que tú programa arranque sólo con windows
Respuesta
1
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.
Gracias .. ya solucione este impase hace tiempos ... y estuve un tiempo alejado y no respondí ...
La solución simple que use fue abrir el archivo con open y no cerrarlo hasta cuando cerraba la aplicación ..
Pero esto de crear archivo temporal si que me suena interesante para otras ideas que tengo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas