[RESUELTO] Problema con acentos usando Freefile

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...

[RESUELTO] Problema con acentos usando Freefile

Notapor DanielG » Sab Oct 24, 2015 3:47 pm

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   Expandir vistaContraer vista
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   Expandir vistaContraer vista
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
DanielG
 
Mensajes: 16
Registrado: Mar Sep 04, 2012 8:24 pm

Re: Problema con acentos usando Freefile

Notapor SLV-es » Sab Oct 24, 2015 4:41 pm

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
Avatar de Usuario
SLV-es
 
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España

Re: Problema con acentos usando Freefile

Notapor DanielG » Sab Oct 24, 2015 5:01 pm

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
DanielG
 
Mensajes: 16
Registrado: Mar Sep 04, 2012 8:24 pm

Re: Problema con acentos usando Freefile

Notapor SLV-es » Sab Oct 24, 2015 5:50 pm

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

He probado con Line Input y lo digiere bien

Código: Seleccionar todo   Expandir vistaContraer vista
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
SLV-es
 
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España

Re: Problema con acentos usando Freefile

Notapor mauricio » Sab Oct 24, 2015 7:39 pm

En Linux Mint, guarda los datos correctamente:
Código: Seleccionar todo   Expandir vistaContraer vista
> 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 3374 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: 5932
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: Problema con acentos usando Freefile

Notapor mauricio » Sab Oct 24, 2015 8:26 pm

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   Expandir vistaContraer vista
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
mauricio
 
Mensajes: 5932
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: Problema con acentos usando Freefile

Notapor SLV-es » Dom Oct 25, 2015 11:47 am

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

Código: Seleccionar todo   Expandir vistaContraer vista
> 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 3357 veces


LIBO
line-input-libo-01.png
line-input-libo-01.png (11.54 KiB) Visto 3357 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
Avatar de Usuario
SLV-es
 
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España

Re: Problema con acentos usando Freefile

Notapor DanielG » Lun Oct 26, 2015 6:31 pm

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

Notapor DanielG » Lun Oct 26, 2015 6:38 pm

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
DanielG
 
Mensajes: 16
Registrado: Mar Sep 04, 2012 8:24 pm

Re: [RESUELTO] Problema con acentos usando Freefile

Notapor SLV-es » Lun Oct 26, 2015 6:49 pm

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
Avatar de Usuario
SLV-es
 
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España

Re: [RESUELTO] Problema con acentos usando Freefile

Notapor DanielG » Mar Oct 27, 2015 3:41 pm

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
DanielG
 
Mensajes: 16
Registrado: Mar Sep 04, 2012 8:24 pm

Re: [RESUELTO] Problema con acentos usando Freefile

Notapor mauricio » Mar Oct 27, 2015 3:52 pm

Si vas a usar CSV, considera usar EasyDev, mira que sencillo es:
Código: Seleccionar todo   Expandir vistaContraer vista
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
Avatar de Usuario
mauricio
 
Mensajes: 5932
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX


Volver a Macros y API UNO

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados