Sobre xtra fileIO
Hola belledurica:
Te cuento, tengo una película en la que uso el xtra FileIO para abrir unos ficheros que tengo fuera de Director hechos con el bloc de notas, al abrirlos, un ENTER en el fichero externo lo abre como si hubiera DOS ENTER. El miembro de la película en la que vuelco el fichero de de tipo texto, uso Director 7.
¿Sabes por qué me puede pasar esto y como solucionarlo? Muchas gracias
Enag
Te cuento, tengo una película en la que uso el xtra FileIO para abrir unos ficheros que tengo fuera de Director hechos con el bloc de notas, al abrirlos, un ENTER en el fichero externo lo abre como si hubiera DOS ENTER. El miembro de la película en la que vuelco el fichero de de tipo texto, uso Director 7.
¿Sabes por qué me puede pasar esto y como solucionarlo? Muchas gracias
Enag
1 Respuesta
Respuesta de bedelludrica
1
1
Bueno si quieres puedes usar mis comportamientos para fileio:
Para lo de la tecla enter debes convertir el comportamiento a script.
On getBehaviorTooltip me
return \
"Usa este comportamiento para leer el contenido de un texto externo y colocarlo en un text de director. "&\
"Debes indicar la ruta relativa. "&\
return&\
"Comportamiento realizado por bedelludrica: " & \
return&\
"[email protected] "
end getBehaviorTooltip
property p_direccion,p_texto
on getPropertyDescriptionList
lista= [:]
addProp lista, #p_direccion,\
[#comment: "escribe la ruta del archivo",#format:#String,\
#default: "texto.txt" ]
addProp lista, #p_texto, \
[#comment: "elige el texto" ,#format:#text\
,#default:""]
return lista
end getPropertyDescriptionList
on mouseup me
instancia=new(xtra "fileIO")
nombre_archivo=the pathname&p_direccion
if nombre_archivo="" then return FALSE
--Esto analiza los errores si se producen
if status(instancia)<>0 then
fallo=error(instancia, status(instancia))
alert ("Se ha poducido un error en la lectura, debe repetir la operaciòn:")
return ""
end if
--Abre el archivo en la memoria para poder trabajar con el
--el tercer parámetro es 1 porque el archivo se abre solo para leer
openfile(instancia, nombre_archivo, 1)
--Se lee el contenido del archivo y se almacena en una variable
texto=readfile(instancia)
--se guarda el contenido de la variable en un texto de director
p_texto.text=texto
--Se borra la instancia
Closefile(instancia)
end
on getBehaviorTooltip me
return \
"Usa este comportamiento para guardar el contenido de un text interno de director y colocarlo en un texto externo. "&\
"Debes indicar la ruta relativa. "&\
return&\
"Comportamiento realizado por bedelludrica: " & \
return&\
"[email protected] "
end getBehaviorTooltip
property p_direccion,p_texto
on getPropertyDescriptionList
lista= [:]
addProp lista, #p_direccion,\
[#comment: "escribe la ruta del archivo",#format:#String,\
#default: "texto.txt" ]
addProp lista, #p_texto, \
[#comment: "elige el texto" ,#format:#text\
,#default:""]
return lista
on mouseup me
instancia=new(xtra "fileIO")
nombre_archivo=the pathname&p_direccion
--Esto analiza los errores si se producen
if status(instancia)<>0 then
fallo=error(instancia, status(instancia))
alert ("Se ha poducido un error en la lectura, debe repetir la operaciòn:")
return ""
end if
--Abre el archivo en la memoria para poder trabajar con el
--el tercer parámetro es 1 porque el archivo se abre solo para grabar
openfile(instancia, nombre_archivo, 2)
--Borra el archivo existente, si es que existiera.
delete(instancia)
--Crea de nuevo ese archivo para poder guardarlo con los nuevos datos
createfile(instancia, nombre_archivo)
--Abre el archivo en la memoria para poder trabajar con el
--el tercer parámetro es 1 porque el archivo se abre solo para grabar
openfile(instancia, nombre_archivo, 2)
--se crea una variable con el texto que se quiere guardar en el archivo txt
texto=p_texto.text
--Escribe dentro del archivo txt
Writestring(instancia, texto)
--Se borra la instancia
Closefile(instancia)
end
Para lo de la tecla enter debes convertir el comportamiento a script.
On getBehaviorTooltip me
return \
"Usa este comportamiento para leer el contenido de un texto externo y colocarlo en un text de director. "&\
"Debes indicar la ruta relativa. "&\
return&\
"Comportamiento realizado por bedelludrica: " & \
return&\
"[email protected] "
end getBehaviorTooltip
property p_direccion,p_texto
on getPropertyDescriptionList
lista= [:]
addProp lista, #p_direccion,\
[#comment: "escribe la ruta del archivo",#format:#String,\
#default: "texto.txt" ]
addProp lista, #p_texto, \
[#comment: "elige el texto" ,#format:#text\
,#default:""]
return lista
end getPropertyDescriptionList
on mouseup me
instancia=new(xtra "fileIO")
nombre_archivo=the pathname&p_direccion
if nombre_archivo="" then return FALSE
--Esto analiza los errores si se producen
if status(instancia)<>0 then
fallo=error(instancia, status(instancia))
alert ("Se ha poducido un error en la lectura, debe repetir la operaciòn:")
return ""
end if
--Abre el archivo en la memoria para poder trabajar con el
--el tercer parámetro es 1 porque el archivo se abre solo para leer
openfile(instancia, nombre_archivo, 1)
--Se lee el contenido del archivo y se almacena en una variable
texto=readfile(instancia)
--se guarda el contenido de la variable en un texto de director
p_texto.text=texto
--Se borra la instancia
Closefile(instancia)
end
on getBehaviorTooltip me
return \
"Usa este comportamiento para guardar el contenido de un text interno de director y colocarlo en un texto externo. "&\
"Debes indicar la ruta relativa. "&\
return&\
"Comportamiento realizado por bedelludrica: " & \
return&\
"[email protected] "
end getBehaviorTooltip
property p_direccion,p_texto
on getPropertyDescriptionList
lista= [:]
addProp lista, #p_direccion,\
[#comment: "escribe la ruta del archivo",#format:#String,\
#default: "texto.txt" ]
addProp lista, #p_texto, \
[#comment: "elige el texto" ,#format:#text\
,#default:""]
return lista
on mouseup me
instancia=new(xtra "fileIO")
nombre_archivo=the pathname&p_direccion
--Esto analiza los errores si se producen
if status(instancia)<>0 then
fallo=error(instancia, status(instancia))
alert ("Se ha poducido un error en la lectura, debe repetir la operaciòn:")
return ""
end if
--Abre el archivo en la memoria para poder trabajar con el
--el tercer parámetro es 1 porque el archivo se abre solo para grabar
openfile(instancia, nombre_archivo, 2)
--Borra el archivo existente, si es que existiera.
delete(instancia)
--Crea de nuevo ese archivo para poder guardarlo con los nuevos datos
createfile(instancia, nombre_archivo)
--Abre el archivo en la memoria para poder trabajar con el
--el tercer parámetro es 1 porque el archivo se abre solo para grabar
openfile(instancia, nombre_archivo, 2)
--se crea una variable con el texto que se quiere guardar en el archivo txt
texto=p_texto.text
--Escribe dentro del archivo txt
Writestring(instancia, texto)
--Se borra la instancia
Closefile(instancia)
end
Hola belledurica:
Gracias por tus comportamientos, pero el que uso realmente es muy parecido al que me pasas. Aquí te lo paso, lo llamo desde el "on mouse up me" del botón que pulso:
on AbrirFichero
Global myFile
if objectP(myFile) then -- Borrar la instancia si ya existe
myFile = 0
end if
myFile = new(xtra "fileio") -- Crear una instancia de FileIO
fileName = NbFich(numCast) -- Obtener nombre del fichero a abrir
if not voidP(filename) and not (filename = EMPTY) then
openFile(myFile, filename, 1) -- Abrir el fichero
if status(myFile) = 0 then
theFile = readFile(myFile) -- Leer el fichero entero
member("txtHex","Textos").text = theFile -- Llenar el cast con el texto
else
alert error(myfile,status(myfile)) -- Mostrar mensaje de error
end if
closeFile(myFile) -- Cerrar el fichero
end if
myFile = 0 -- Borrar la instancia
end
No termino de enterderte cuando dices que para arreglar que donde en el fichero de texto hay un enter no me lo abra como si hubiera dos, tengo que convertir el comportamiento a script, ¿a qué te refieres?
Saludos,
enag
Gracias por tus comportamientos, pero el que uso realmente es muy parecido al que me pasas. Aquí te lo paso, lo llamo desde el "on mouse up me" del botón que pulso:
on AbrirFichero
Global myFile
if objectP(myFile) then -- Borrar la instancia si ya existe
myFile = 0
end if
myFile = new(xtra "fileio") -- Crear una instancia de FileIO
fileName = NbFich(numCast) -- Obtener nombre del fichero a abrir
if not voidP(filename) and not (filename = EMPTY) then
openFile(myFile, filename, 1) -- Abrir el fichero
if status(myFile) = 0 then
theFile = readFile(myFile) -- Leer el fichero entero
member("txtHex","Textos").text = theFile -- Llenar el cast con el texto
else
alert error(myfile,status(myfile)) -- Mostrar mensaje de error
end if
closeFile(myFile) -- Cerrar el fichero
end if
myFile = 0 -- Borrar la instancia
end
No termino de enterderte cuando dices que para arreglar que donde en el fichero de texto hay un enter no me lo abra como si hubiera dos, tengo que convertir el comportamiento a script, ¿a qué te refieres?
Saludos,
enag
Nada pues me refería precisamente a un script como el que me acabas de poner. Tiene buena pinta tu script. NO entiendo el fallo. ¿Dices qué te abre el fichero dos veces?. ¿Cómo sabes que te lo abre dos veces?
On AbrirFichero
Global myFile
myFile = new(xtra "fileio") -- Crear una instancia de FileIO
fileNamen = NbFich(numCast) -- Obtener nombre del fichero a abrir
openFile(myFile, filenamen, 1) -- Abrir el fichero
theFile = readFile(myFile) -- Leer el fichero entero
member("txtHex","Textos").text = theFile -- Llenar el cast con el texto
closeFile(myFile) -- Cerrar el fichero
myFile = 0 -- Borrar la instancia
end
On AbrirFichero
Global myFile
myFile = new(xtra "fileio") -- Crear una instancia de FileIO
fileNamen = NbFich(numCast) -- Obtener nombre del fichero a abrir
openFile(myFile, filenamen, 1) -- Abrir el fichero
theFile = readFile(myFile) -- Leer el fichero entero
member("txtHex","Textos").text = theFile -- Llenar el cast con el texto
closeFile(myFile) -- Cerrar el fichero
myFile = 0 -- Borrar la instancia
end
No es que me lo abra dos veces, lo que ocurre es que si yo tengo en el fichero externo un salto linea al volcarlo al cast me aparecen dos, por ejemplo, si tengo algo así:
"linea 1
linea2"
Al abrirlo en director se ve
"linea 1
(Linea en blanco)
linea2"
¿Me he explicado? Ya me dirás que opinas, muchas gracias por tu tiempo y tu rapidez.
Enag
"linea 1
linea2"
Al abrirlo en director se ve
"linea 1
(Linea en blanco)
linea2"
¿Me he explicado? Ya me dirás que opinas, muchas gracias por tu tiempo y tu rapidez.
Enag
Si es cierto que tiebne ese fallo y es que te coloca el símbolo de unicode cuadrado por cada linea. Esto da el efecto de salto de linea en director pero no en la ventana message o en el contenido de la variable. Lo que ocurre es que el fileio sirve para guardar datos en una lista y poco más, para otras cosas hay bases de datos.
Fíjate en esto y en mis comentarios:
On A
myFile = new(xtra "fileio") -- Crear una instancia de FileIO
fileNamen = the pathname&"t.txt" -- Obtener nombre del fichero a abrir
openFile(myFile, filenamen, 1) -- Abrir el fichero
theFile = readFile(myFile) -- Leer el fichero entero
-- Esto te pone la linea 5 del archivo bien
put thefile.line[5]
repeat with i=1 to thefile.line.count --hace un bucle por cada linea del archivo
--haciendo el bucle te sigue haciendo lo mismo que sin el
--sim embargo el numero de lineas que cuenta es bueno
member("Textos").line = theFile.line
end repeat
closeFile(myFile) -- Cerrar el fichero
myFile = 0 -- Borrar la instancia
end
De manera que la solución es guardar en el archivo de texto el texto pero en formato html:
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF">
fffffffffffffffg kjkkjkkjkfgfh gjgj<br>
gfgfgfgffffffffffffffffffffffffffff
</body>
</html>
Y colocar el texto así:
on b
myFile = new(xtra "fileio") -- Crear una instancia de FileIO
fileNamen = the pathname&"t.txt" -- Obtener nombre del fichero a abrir
openFile(myFile, filenamen, 1) -- Abrir el fichero
theFile = readFile(myFile) -- Leer el fichero entero
member("htm").text=thefile
member("Textos").html =field "htm"
closeFile(myFile) -- Cerrar el fichero
myFile = 0 -- Borrar la instancia
end
Fíjate en esto y en mis comentarios:
On A
myFile = new(xtra "fileio") -- Crear una instancia de FileIO
fileNamen = the pathname&"t.txt" -- Obtener nombre del fichero a abrir
openFile(myFile, filenamen, 1) -- Abrir el fichero
theFile = readFile(myFile) -- Leer el fichero entero
-- Esto te pone la linea 5 del archivo bien
put thefile.line[5]
repeat with i=1 to thefile.line.count --hace un bucle por cada linea del archivo
--haciendo el bucle te sigue haciendo lo mismo que sin el
--sim embargo el numero de lineas que cuenta es bueno
member("Textos").line = theFile.line
end repeat
closeFile(myFile) -- Cerrar el fichero
myFile = 0 -- Borrar la instancia
end
De manera que la solución es guardar en el archivo de texto el texto pero en formato html:
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF">
fffffffffffffffg kjkkjkkjkfgfh gjgj<br>
gfgfgfgffffffffffffffffffffffffffff
</body>
</html>
Y colocar el texto así:
on b
myFile = new(xtra "fileio") -- Crear una instancia de FileIO
fileNamen = the pathname&"t.txt" -- Obtener nombre del fichero a abrir
openFile(myFile, filenamen, 1) -- Abrir el fichero
theFile = readFile(myFile) -- Leer el fichero entero
member("htm").text=thefile
member("Textos").html =field "htm"
closeFile(myFile) -- Cerrar el fichero
myFile = 0 -- Borrar la instancia
end
- Compartir respuesta
- Anónimo
ahora mismo