[RESUELTO] Problema con acentos usando Freefile

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
DanielG
Mensajes: 16
Registrado: Mar Sep 04, 2012 8:24 pm

[RESUELTO] Problema con acentos usando Freefile

Mensaje por DanielG »

Buenos Días.

Tengo problemas con los acentos, en el momento de leer los datos de un archivo de bloq de Notas (.txt)

Trabajando con una macro de Writer, esta me pide Apellido, Nombres y nacionalidad. Luego las graba en un archivo llamado SiiLog2.txt

Al momento de ejecutar la macro que lee esos archivos, los acentos no aparecen.

El tema es que abro el archivo de textos con el block de notas, y los acentos allí están.

copio acá la macro de grabar archivo y la macro de leer archivo, a ver si me pueden dar una mano.

desde ya muchas gracias

Código: Seleccionar todo

Sub GrabaArchivos2

    dim DocOrg As Object
    dim sRutaURL As String
    dim sRutaURL2 As String
    dim sRuta As String

		GlobalScope.BasicLibraries.LoadLibrary( "Tools" )
		sRutaURL = ThisComponent.getURL()
		sRuta = ConvertFromUrl(sRutaURL)
		sRuta = DirectoryNameoutofPath(sRuta, GetPathSeparator())
		sRutaURL2 = ConvertToUrl(sRuta)
		sRutaURL2 = sRutaURL2 & "/SIIlog2.txt"
		DocOrg = ThisComponent.CurrentController.Frame
		
		dim sApell As String
		dim sNombr As String
		dim sNacio As String
		dim sRegis As String
		dim iLibre As Integer
	
		sApell = InputBox("Apellidos? ")
		sNombr = InputBox("Nombres?")
		sNacio = InputBox("Nacionalidad?")
		
		sRegis = "> " & sApell & ","	& sNombr & "," & sNacio & "," & _
		         Format(Date, "ddd, dd-mmm-yy") & "," & Format(Now, "HH:mm:ss") & ",<"
				
		iLibre = FreeFile
		Open sRutaURL2 For Append As #iLibre
		Print #iLibre, sRegis
		Close #iLibre
		
End Sub

Código: Seleccionar todo

Sub LeeArchivos2
    dim DocOrg As Object
    dim sRutaURL As String
    dim sRutaURL2 As String
    dim sRuta As String

		GlobalScope.BasicLibraries.LoadLibrary( "Tools" )
		sRutaURL = ThisComponent.getURL()
		sRuta = ConvertFromUrl(sRutaURL)
		sRuta = DirectoryNameoutofPath(sRuta, GetPathSeparator())
		sRutaURL2 = ConvertToUrl(sRuta)
		sRutaURL2 = sRutaURL2 & "/SIIlog2.txt"
		DocOrg = ThisComponent.CurrentController.Frame    

	dim iLibre As Integer    
'  	dim sApell As String
'	dim sNombr As String
'	dim sNacio As String
	dim sRegis(100) As String
	dim sCampo As String
	dim sLinea As String 
    dim Cont1 As Byte
    dim Cont2 As Byte

	iLibre = Freefile : Cont1=0 

	Open sRutaURL2 For Input As iLibre
		Do While Not eof(iLibre)
			Cont1 = Cont1 + 1 : sLinea =""
				For Cont2 = 1 To 7
					Input #iLibre, sCampo
					sLinea = sLinea & sCampo
					sRegis(Cont1) = sLinea
				next Cont2
		Loop
	Close #iLibre

	For Cont2 = 1 to Cont1
		MsgBox sRegis(Cont2)
	Next Cont2

End Sub
Última edición por mauricio el Lun Oct 26, 2015 6:40 pm, editado 2 veces en total.
Razón: Marcar icono de resuelto
LibreOffice 3.6.1 Windows 7 y OpenSuse 12.04
Avatar de Usuario
SLV-es
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España
Contactar:

Re: Problema con acentos usando Freefile

Mensaje por SLV-es »

Es muy probable que sea el bloc de notas el que cambia la codificación del archivo de texto.
Prueba a abrir el archivo de texto (recién creado y sin abrirlo antes con nada) con NotePad++, y desde su menú Codificación, comprueba si el archivo se almacena en ANSI, UTF8 u otro juego de caractéres.
Luego lo abres con el bloc de notas, modificas, guardas, y comprueba de nuevo con NotePad++ si la codificación es la misma
+info en la web "no oficial" dedicada a OpenOffice en Español
AOO 4.1.2 y LibO 4.4.6 en W10 y en Lliurex
No respondo mensajes privados sobre AOO, por favor, utiliza el foro para tus preguntas
DanielG
Mensajes: 16
Registrado: Mar Sep 04, 2012 8:24 pm

Re: Problema con acentos usando Freefile

Mensaje por DanielG »

Hola, gracias por responder.

bajé el archivo Notepad++ y lo instalé.

Modifiqué la macro para que grabe en /SiiLog4.txt
Luego ejecuté la macro, en apellidos puse "Pérez"
Abrí con Notepad++ sale bien y la codificación figura "ANSI"
Abrí con el Block de notas y modifiqué un dato (pase de minuscula a mayúsculas una letra)

En el Notepad++ sigue figurando Codificación ANSI y sale bien (al igual que en block de notas que el acento sale bien), pero ejecuto la macro "leerArchivo4" y sale > Prez en lugar de Pérez
LibreOffice 3.6.1 Windows 7 y OpenSuse 12.04
Avatar de Usuario
SLV-es
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España
Contactar:

Re: Problema con acentos usando Freefile

Mensaje por SLV-es »

Parece ser que input tiene problemas con los acentos y ñ's

He probado con Line Input y lo digiere bien

Código: Seleccionar todo

Sub LeeArchivos2
	Dim DocOrg As Object
	Dim sRutaURL As String
	Dim sRutaURL2 As String
	Dim sRuta As String

	GlobalScope.BasicLibraries.LoadLibrary( "Tools" )
	sRutaURL = ThisComponent.getURL()
	sRuta = ConvertFromURL(sRutaURL)
	sRuta = DirectoryNameoutofPath(sRuta, GetPathSeparator())
	sRutaURL2 = ConvertToURL(sRuta)
	sRutaURL2 = sRutaURL2 & "/SIIlog2.txt"
	DocOrg = ThisComponent.CurrentController.Frame

	Dim iLibre As Integer
	Dim sRegis() As String
	Dim sLinea As String
	Dim n As Long

	iLibre = FreeFile

	Open sRutaURL2 For Input As iLibre
	Do While Not Eof(iLibre)
		Line Input #iLibre, sLinea
		ReDim Preserve sRegis(n)
		sRegis(n) = sLinea
		n=n+1
	Loop
	Close #iLibre

	For n = 0 To ubound(sRegis)
		MsgBox sRegis(n)
	Next n

End Sub
Nota: Si te gusta programar, mira aquí: BasicIDETools
+info en la web "no oficial" dedicada a OpenOffice en Español
AOO 4.1.2 y LibO 4.4.6 en W10 y en Lliurex
No respondo mensajes privados sobre AOO, por favor, utiliza el foro para tus preguntas
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Problema con acentos usando Freefile

Mensaje por mauricio »

En Linux Mint, guarda los datos correctamente:

Código: Seleccionar todo

> Baeza,Mauricio,Mexicana,Sat, 24-Oct-15,13:33:01,<
> Pérez,Jorge,Español,Sat, 24-Oct-15,13:33:51,<
pero al leer muestra:
foro.png
foro.png (7.26 KiB) Visto 5543 veces
¿Alguna razón especial para ese formato de registro?
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Problema con acentos usando Freefile

Mensaje por mauricio »

Con Python se escribe y lee correctamente:
foro.png
Para probar es necesario: https://github.com/UniversoLibreMexicoA ... v2.0.0.oxt

Código: Seleccionar todo

Sub GuardarDatos()
	util = createUnoService("org.universolibre.EasyDev")	
	
	ruta = util.getPathInfo(ThisComponent.getURL())
	nueva_ruta = util.pathJoin(Array(ruta(0), "SIIlog2.txt"))

    sApell = InputBox("Apellidos? ")
    sNombr = InputBox("Nombres?")
    sNacio = InputBox("Nacionalidad?")
          
    sRegis = "> " & sApell & ","   & sNombr & "," & sNacio & "," & _
    	Format(Date, "ddd, dd-mmm-yy") & "," & Format(Now, "HH:mm:ss") & ", <" & CHR(10)

	util.fileSave(nueva_ruta, "a", sRegis)

	MsgBox "Se leerá el archivo."
	
	data = util.fileOpen(nueva_ruta, "r", True)
	util.msgbox(Join(data, CHR(10)))

End Sub
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
SLV-es
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España
Contactar:

Re: Problema con acentos usando Freefile

Mensaje por SLV-es »

Pues a mí me está funcionando perfectamente el código que entregué tanto en AOO como en LibO, W7:

Código: Seleccionar todo

> Pérez,Raúl José,Español,dom, 25-oct-15,11:43:50,<
> Pérez,Raúl José,Español,dom, 25-oct-15,11:45:41,<
AOO
line-input-01.png
line-input-01.png (10.24 KiB) Visto 5526 veces
LIBO
line-input-libo-01.png
line-input-libo-01.png (11.54 KiB) Visto 5526 veces
Así que ni idea de porqué falla en tu distribución de Linux
+info en la web "no oficial" dedicada a OpenOffice en Español
AOO 4.1.2 y LibO 4.4.6 en W10 y en Lliurex
No respondo mensajes privados sobre AOO, por favor, utiliza el foro para tus preguntas
DanielG
Mensajes: 16
Registrado: Mar Sep 04, 2012 8:24 pm

Re: Problema con acentos usando Freefile

Mensaje por DanielG »

SLV-es:

Así con Line Input lo lee perfectamente.
Gracias por la ayuda!
PD edito el título para poner Resuelto.

Mauricio:

Aquí puse un ejemplo, donde solo se piden 3 datos. En el trabajo que estoy haciendo en realidad son 9 datos por persona y pueden llegar a ser hasta 12 personas. Además de esos datos (datos personales) también hay carga de otros datos más (aproximadamente 25 campos) y luego con todo eso se arma un escrito.
Hasta ahora lo que tenía hecho eran una serie de macros donde te van pidiendo los datos, los carga en unas variables y luego te arma el escrito, pero quería tener la posibilidad de grabarlos para de esa manera tener la opción de cargar algunos datos, luego otros y luego hacer el escrito sin tener que hacer todo de una sola vez.
Posiblemente la mejor opción hubiese sido crear una tabla, pero la verdad que llevo mucho tiempo leyendo tu libro, el de domando al escritor, starofice, ejemplos en la página de slv-es, etc y tenía que meter manos a la obra para hacer esto y de última a futuro, cuando aprenda a manejar una tabla, perfeccionarlo.
LibreOffice 3.6.1 Windows 7 y OpenSuse 12.04
DanielG
Mensajes: 16
Registrado: Mar Sep 04, 2012 8:24 pm

Re: [RESUELTO] Problema con acentos usando Freefile

Mensaje por DanielG »

Otrosi:

En el apuro por contestar me olvidé de agradecer a los autores de los libros Domando al escritor (no recuerdo al autor), Aprendiendo OO (Mauricio), Staroffice (no recuerdo el autor), como así también páginas a las que accedí para obtener valiosa información (la de SLV, me fue muy util una macro en donde hay que tildar algunas casillas de verificación, para luego que tome el texto debajo del título y arme un documento nuevo solo con el texto seleccionado)

Ahora que tengo esto más o menos controlado voy a tener que aprender como manejar tablas pero desde el Writer, porque es ese el programa que uso fundamentalmente.

Muchas gracias a todos los que desinteresadamente hay escrito tantos artículos que nos ayudan a abrir un poco los ojos.
LibreOffice 3.6.1 Windows 7 y OpenSuse 12.04
Avatar de Usuario
SLV-es
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España
Contactar:

Re: [RESUELTO] Problema con acentos usando Freefile

Mensaje por SLV-es »

Si no quieres meterte en tema de guardar los datos en bases de datos, quizás te resulte más interesante almacenarlos en una hoja de cálculo.

Si prefieres seguir por esta vía (archivos planos de texto) recomiendo que separes los campos por ; en lugar de por , y que no agregues los > < al final y principio, pues de esa forma, el documento TXT generado es en realidad un CSV, que puedes editar directamente con Calc o incluso con Excel.

Saludos
+info en la web "no oficial" dedicada a OpenOffice en Español
AOO 4.1.2 y LibO 4.4.6 en W10 y en Lliurex
No respondo mensajes privados sobre AOO, por favor, utiliza el foro para tus preguntas
DanielG
Mensajes: 16
Registrado: Mar Sep 04, 2012 8:24 pm

Re: [RESUELTO] Problema con acentos usando Freefile

Mensaje por DanielG »

esa es una muy buena alternativa, de hecho recuerdo haber leído algo con archivos CSV pero no se porque motivo, inconscientemente los asocié a que se trataba de archivos de contactos outook... y medio que lo pasé por arriba sin detenerme mucho en la lectura
LibreOffice 3.6.1 Windows 7 y OpenSuse 12.04
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: [RESUELTO] Problema con acentos usando Freefile

Mensaje por mauricio »

Si vas a usar CSV, considera usar EasyDev, mira que sencillo es:

Código: Seleccionar todo

Sub ExportCSV()
	util = createUnoService("org.universolibre.EasyDev")	
	
	range = ThisComponent.CurrentSelection
	
	path = "/home/mau/test.csv"
	data = range.getDataArray()
	options = Array()

	util.exportCSV(path, data, options)
	
End Sub
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Responder