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]