Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Bug De Gambas
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje 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
 

 



 
tercoIDE - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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

Print Val(Str$(2.74385673498574398 ))

2,74385673498574398
 

 



 
tercoIDE - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Bug De Gambas 
 
tercoIDE escribió: [Ver mensaje]
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?
 



 
codificador - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Bug De Gambas 
 
jguardon escribió: [Ver mensaje]
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:

dim entrada as string
Input #f, a, entrada, stU.palabras
stU.be = val(entrada)
 

 



 
tercoIDE - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Comunicar Un Movil Con Gambas: Bluetooth ... jsbsan General 2 Sabado, 14 Julio 2012, 23:37 Ver último mensaje
sebikul
No hay nuevos mensajes Consulta Sobre Componentes Al Migrar Progr... drdr15 Controles/Librerías/Componentes 2 Miercoles, 24 Abril 2013, 19:01 Ver último mensaje
jsbsan
No hay nuevos mensajes Cerrar Gambas Para Abrir Otro Proyecto De ... Shell General 5 Jueves, 21 Septiembre 2017, 19:42 Ver último mensaje
shordi
No hay nuevos mensajes Gambas Book. Manual Online Alemán De Gamb... Shell General 3 Martes, 19 Febrero 2019, 14:29 Ver último mensaje
tincho
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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



  

 

cron