Hola Alejandro,

Alejandro Rivas escribió:
Saludos!

y  me disculpan la insistencia, pero esta incertidumbre me tiene de un hilo,
resulta que he googleado y aún no encuentro la salida al uso del GET y el PUT en los archivos "random" usando OObasic.

'---------------------------------- Mensaje inicial # Saludos # # Estoy aprendiendo sobre el uso de archivos secuenciales y aleatorios. # en el segundo caso me he encontrado con un mensaje de error # # Los ejemplos que uso (vienen en la ayuda del OpenOffice) # # '-------------------------------------------------------
# Sub EjemploAccesoAleatorio
#       Dim iNumero As Integer
# Dim sTexto As Variant # Dim aArchivo As String
#       aArchivo = "/data.txt"

el error debe estar aquí: en Linux "/data.txt" indica que escriba/lea en "/", y seguro no tienes privilegios de escritura; en Windows tampoco creo que funcione escribir simplemente "\" o "/" como indicando el archivo relativamente

En Linux puedes probar con aArchivo = "data.txt", esto escribirá en /home/<user>/data.txt

#       iNumero = Freefile
#       
#       Open aArchivo For Random As #iNumero Len=32
#               'Seek #iNumero REM Posición al principio
# Put #iNumero,1, "Esta es linea de texto 1" # Put #iNumero,2, "Esta es línea de texto 2 " # Put #iNumero,3, "Esta es línea de texto 3 "
#       Close #iNumero
# end sub
# # # # # Sub EjemploAccesoAleatRecupera # # Dim iNumero As Integer
#       Dim sTexto As Variant REM Debe ser una variante
#       Dim aArchivo As String
#       aArchivo = "/data.txt"
#       iNumero = Freefile
#               Open aArchivo For random As #iNumero Len=32'
# Seek #iNumero,1 # Get #iNumero,1,sTexto
#       Close #iNumero
#       msgbox sTexto
# # end sub
# '---------------------------------------------------------
# # La primera macro supongo que obra bien pues aparece el archivo.

estás seguro que no genera un error al escribirlo? En qué directorio lo escribe? El error "Error de E/S de dispositivo" indica que no se pudo escribir y/o leer el archiv, y si logras escribir indicando "/data.txt", pero no leer, es probable que lo primero sea un bug.

La siguiente versión funciona perfectamente en linux

Sub RANDOM_PUT
        ON ERROR GOTO ERRHDLR
        Dim iNumero As Integer
        Dim sTexto As Variant
        Dim aArchivo As String
        
        'esto escribirá en /home/user/data.txt
        aArchivo = "data.txt"
        'Por qué .txt?
        'De este modo se escribe un archivo BINARIO!!!!!
        
        iNumero = Freefile      
        Open aArchivo For Random As #iNumero Len=32
        
        Put #iNumero,, "Esta es linea de texto 1"
        Put #iNumero,, "Esta es línea de texto 2"
        Put #iNumero,, "Esta es línea de texto 3"
        
        'Poner la operación de cerrar dentro de un manejador de errores
        'de tal modo nos aseguramos de que el archivo sea cerrado!!!!!
        ERRHDLR:
        Close #iNumero
end sub

Sub RANDOM_GET
        ON ERROR GOTO ERRHDLR
        Dim iNumero As Integer
        Dim sTexto As Variant REM Debe ser una variante
        Dim aArchivo As String
        
        
        aArchivo = "data.txt"
        iNumero = Freefile
        Open aArchivo For random As #iNumero Len=32'
        
        Seek #iNumero,1
        Get #iNumero,1,sTexto
        
        msgbox sTexto
        
        ERRHDLR:
        Close #iNumero
end sub


Por otro lado, I/O en OOo Basic es horrendo; deberías probar con la API directamente (los módulos com.sun.star.ucb y com.sun.star.io)


Saludos
Ariel.




--
Ariel Constenla-Haile
La Plata, Argentina

[EMAIL PROTECTED]
[EMAIL PROTECTED]

http://www.ArielConstenlaHaile.com.ar/ooo/



"Aus der Kriegsschule des Lebens
                - Was mich nicht umbringt,
        macht mich härter."
                Nietzsche Götzendämmerung, Sprüche und Pfeile, 8.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Responder a