|
Página 1 de 1
|
Autor |
Mensaje |
tercoIDE
Analista Programador
Registrado: Noviembre 2013
Mensajes: 713
Edad: 54
|
Bug De Gambas
Estudiando el manejo de arrays de Struct , descubri un pequeño bug en gambas...
Este codigo escribe en un archivo datos, que luego no puede leer (veran que da error en el Input)
El codigo NO tiene errores, a ver quien descubre primero el BUG
' gambas module file
Public Struct miEstruct
palabras As String
be As Float
ce As Long
End Struct
Public stU As Struct MiEstruct
Public stA As New MiEstruct[]
Public Sub Main()
Dim a As Integer, f As File
stU.be = 2.74385673498574398
stU.palabras = "gambas"
stA.Add(stU)
stA.Resize(20)
'stA.add(stU, 20)
stA.fill(stU)
f = Open Application.Path &/ "fileTest.dat" For Create
Print stA.Count
For a = 0 To stA.Count - 1
'Print a, stA[a].be, stA[a].palabras
Print #f, a, stA[a].be, stA[a].palabras
Next
f.Close
f = Open Application.Path &/ "fileTest.dat" For Read
For a = 0 To stA.Count - 1
Input #f, a, stU.be, stU.palabras
Print a, stU.be, stU.palabras
Next
f.Close
End
|
#1 Jueves, 21 Noviembre 2013, 02:18 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Bug De Gambas
f = Open Application.Path &/ "fileTest.dat" For Write Create
Usa la orden "for Write create", si no no escribirás nada.
Ayer estuve haciendo las mismas pruebas con el metodo write de los arrays nativos. Luego amplio la informacion.
Escribo desde el teléfono, siento no poder extenderme ahora mucho más.
Saludos
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#2 Jueves, 21 Noviembre 2013, 09:10 |
|
|
tercoIDE
Analista Programador
Registrado: Noviembre 2013
Mensajes: 713
Edad: 54
|
Re: Bug De Gambas
escribe el archivo perfectamente!
El bug esta en la internacionalizacion de la conversion del numero a texto:
stU.be = 2.74385673498574398
la sentencia
Print #f, a, stA[a].be, stA[a].palabras
escribe en el archivo
0 2,74385673498574398 gambas
con la "coma" y no el "punto"
pero la sentencia
Input #f, a, stU.be, stU.palabras
no reconoce a 2,74385673498574398 como numero!
sin embargo, la siguiente sentencia no da error
|
#3 Jueves, 21 Noviembre 2013, 12:09 |
|
|
codificador
Analista Programador
Registrado: Junio 2010
Mensajes: 420
Edad: 114 Ubicación:
|
Re: Bug De Gambas
escribe el archivo perfectamente!
El bug esta en la internacionalizacion de la conversion del numero a texto:
y como esta la configuracion de la coma y el punto del sistema?
|
#4 Jueves, 21 Noviembre 2013, 16:05 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Bug De Gambas
La instrucción Print y los métodos para texto lo que hacen es formatear el texto usando las características de tu idioma o país, o sea, de tu localización. Si en tu país se usa el punto como decimal, se usará el punto y si es la coma pues lo mismo. También se aplica a los formatos de fecha, etc. Por lo tanto no es un bug, es que estás usando las funciones equivocadas.
No creo que lo que realmente quieras es escribir en un fichero los datos como un texto. Más bien, si no me equivoco, lo que quieres es guardar información de arrays de estructuras en un fichero binario.
Si es así, entonces mira esta página, donde se usa Write, en lugar de Print
http://gambasdoc.org/help/lang/write?v3
y esto:
http://gambasdoc.org/help/cat/stream?v3
Saludos
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#5 Jueves, 21 Noviembre 2013, 16:27 |
|
|
tercoIDE
Analista Programador
Registrado: Noviembre 2013
Mensajes: 713
Edad: 54
|
Re: Bug De Gambas
La instrucción Print y los métodos para texto lo que hacen es formatear el texto usando las características de tu idioma o país, o sea, de tu localización. Si en tu país se usa el punto como decimal, se usará el punto y si es la coma pues lo mismo. También se aplica a los formatos de fecha, etc. Por lo tanto no es un bug, es que estás usando las funciones equivocadas.
No creo que lo que realmente quieras es escribir en un fichero los datos como un texto. Más bien, si no me equivoco, lo que quieres es guardar información de arrays de estructuras en un fichero binario.
Es exactamente lo que quiero hacer.
A mi criterio es un bug, porque si usa el formato numerico local para Print #, tambien deberia usarlo para Input #f.
El workaround es facil:
|
#6 Jueves, 21 Noviembre 2013, 17:11 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|