Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Write Print Es Parecido Pero No Es Igual.
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Write Print Es Parecido Pero No Es Igual. 
 
A raiz de un ejemplo de Vuott en otro post vi que usaba la sentencia Write en vez de print, y me preguntaba por que, así que me puse a cambiar el bucle y vi que write queda en la misma linea mientras que print usa una nuea linea de la terminal para cada ciclo.

El código es este
  Repeat
    i = DateDiff(tm, Now, gb.Millisecond)
    Write "\rTiempo transcurrido: " & Date(0, 0, 0, 0, 0, 0, i) ' Si acá se usa Print se agrega una linea cada vez.
    Wait 0.01 ' si se comenta el Wait el efecto es mejor porque los milisegundos no saltan arbitrariamente,
  Until i >= dur
 


Seguro que la mayoría lo sabia, pero yo no lo usaba para nada.

Tambien, a Write, lo uso TercoIDE en una función que me paso:
    Write #fo, b & Chr$(13) & Chr$(10)

Pero en este caso era para editar un archivo.

Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Write Print Es Parecido Pero No Es Igual. 
 
tincho escribió: [Ver mensaje]
write queda en la misma linea mientras que print usa una nuea linea de la terminal


     3533213413
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Write Print Es Parecido Pero No Es Igual. 
 
Nunca he usado write...
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Write Print Es Parecido Pero No Es Igual. 
 
Write se usa más para escribir en ficheros binarios (o stream) y print para escribir en ficheros de texto.

Ambos pueden escribir en streams, pero print usa la representación de texto. No sé si me he explicado bien, pero básicamente yo lo entiendo así.

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: Write Print Es Parecido Pero No Es Igual. 
 
En efecto la instrucción " Print " escribe datos de manera formateada por defecto con un valor 0x0A (es decir: &h0A) al término del fluxo.
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Write Print Es Parecido Pero No Es Igual. 
 

 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Write Print Es Parecido Pero No Es Igual. 
 
tincho escribió: [Ver mensaje]

¿Po... por qué te asombras?
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Write Print Es Parecido Pero No Es Igual. 
 
Me asombro por lo de:
Citar:
Write se usa más para escribir en ficheros binarios (o stream) y print para escribir en ficheros de texto.

Pero en gambas se escribía texto en la terminal no bytes como 01010101010....

y por lo de...
Citar:
por defecto con un valor 0x0A

Ya cuando entramos en Hexagesimales todo se vuelve mas serio.

Por lo tanto en lo referente a escribir en la terminal de gambas quedaría así:

Esto:
Print "\rTiempo transcurrido: " & Date(0, 0, 0, 0, 0, 0, i)
Es equivalente a esto otro:
Write "\rTiempo transcurrido: " & Date(0, 0, 0, 0, 0, 0, i) & "\n"

El resultado es el mismo.

O sea que Write imprime pero sin agregar al final el "\n", como si lo have Print.

Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Write Print Es Parecido Pero No Es Igual. 
 
tincho escribió: [Ver mensaje]
Pero en gambas se escribía texto..... no bytes como 01010101010....

Más precisamente la instrucción "Print" trata automaticamente todo, lo que tiene que escribir, como valores correspondientes a carácteres ASCII.

Por eso, si escribimos:
Print 12345

de verdad "Print" no va a escribir un valor numerico de tipo "Integer", sino una cadena con símbolos numericos.
Es decir:
NO -> &01 &02 &03 &04 &05
SI -> &31 &32 &33 &34 &35 .....

.....pero, de verdad, "Print" siempre añade el valor &0A al final del fluxo !

Asì tendremos: &31 &32 &33 &34 &35 &0A

"Print" trata su datos como caracteres ASCII.

Por eso, si queremos obtener reales valores numericos (es decir: NO caracteres numericos del codigo ASCII), debemos... "respectar" esta caracteristica de la instrucción "Print"; tenemos que convertir los símbolos numericos en reales numeros a través la función "Chr()".

...pero no debemos olvidar que... "Print" siempre añade el valor &0A al final del fluxo !



tincho escribió: [Ver mensaje]
en gambas se escribía .... en la terminal

" Non solum, sed etiam... "
Bueno, por defecto él escribe en "standard output" ("/dev/stdout"); pero si tú quieres, puedes escribir adonde tu quieres.

http://gambaswiki.org/wiki/lang/print?l=es

Exemplum maximum:
Public Sub Main()

  Dim fl As File
  
   fl = Open "/tmp/escrito_con_Print" For Create
  
' "Print" NO escribe en Terminal, sino en el archivo creado:
   Print #fl, Chr(&01) & Chr(&02) & Chr(&03) & Chr(&04)
  
   fl.Close

End


Una otra manera, un po' más... "ortodoxa" es esta:
Public Sub Main()

  Dim fl As File
  
   fl = Open "/tmp/escrito_con_Print" For Create
  
' Redirige la escritura de los datos del fluxo:
   Output To fl

' "Print" NO escribe en Terminal, sino en el archivo creado:
   Print Chr(&01) & Chr(&02) & Chr(&03) & Chr(&04)
  
   fl.Close

End

 



 
última edición por vuott el Lunes, 28 Agosto 2017, 00:19; editado 5 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
Ocultar¡Este tema fue útil?

 

Elegir valoración:                       

Media de valoración Valoración mínima Valoración máxima Número de valoraciones
0.00 0 0 0
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Comando Print soplo General 0 Domingo, 13 Septiembre 2009, 22:25 Ver último mensaje
soplo
No hay nuevos mensajes ¿hay Algun Programa Parecido Al Paint Per... jsbsan General 6 Viernes, 25 Febrero 2011, 01:39 Ver último mensaje
jsbsan
No hay nuevos mensajes Una Ayudita Print Para Textarea Es Posible? portaro Aplicaciones/Fragmentos de Código 9 Sabado, 03 Febrero 2018, 21:58 Ver último mensaje
tincho
No hay nuevos mensajes Cosas Que Se Llaman Igual Pero Que Son Dif... Shell General 4 Jueves, 10 May 2018, 15:09 Ver último mensaje
Shell
 

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
No puede descargar archivos
No puede publicar eventos en el calendario