Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Funcion Scan
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Funcion Scan 
 
Hola!.

¿ Alguien le encontró un uso concreto ?. Puede que el uso sea para los ficheros de texto.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Domingo, 05 Octobre 2014, 21:17; editado 2 veces 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Funcion Scan 
 
Shell:

No conocia esa orden, pero despues de leer la documentación y el comando like con sus patrones,  se me ha ocurrido que se puede usar para procesar lineas de texto, filtrandolas usando distintos patrones, y obtener información de ellas, sin tener que usar ordenes de procesamiento de cadenas (mid,inst, etc), haciendo mucho más fácil y clara la obtención de información.

Esta tarde hago un ejemplo.  

Saludos

Julio
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Funcion Scan 
 
La función "Scan ()" parece ser una especie de función "Split ()".
La función devuelve un vector de tipo "String" contenente aquellas partes de la cadena identificadas en base a uno o más carácteres contiguos (claramente el espacio tambien es un carácter) existentes en la cadena; y en todo caso colocados dentro de dos meta-carácteres  *

Un ejemplo:

Public Sub Main()

  Dim s As String = "Python|encantó  y, %comióK/ Shell !"
  Dim ss As String[]

   ss = Scan(s, "*|* *, %*K/ *")
 
   For Each s In ss
     Print s
   Next

End

 



 
última edición por vuott el Lunes, 06 Octobre 2014, 14:37; editado 6 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Funcion Scan 
 
Bueno, os dejo mi ejemplo:

Se trata de averiguar la funciones (privadas, publicas), subrutinas ( privadas y publicas), y las variables (privadas, publicas, locales) de un proyecto realizado en gambas3.

Lo más interesante del código es esta parte:
For a = 0 To lineas.Max
    lineas[a] = Trim(lineas[a])

    'compruebo patron: "PUBLIC SUB *"
    LISTA = Scan(lineas[A], "PUBLIC SUB *")
    If LISTA.count > 0 Then
      TreeView1.Add(ruta & "/sub/publicas/" & LISTA[0], LISTA[0] & " en " & Str$(a),, ruta & "/sub/publicas")
      Continue
    Endif

    LISTA = Scan(lineas[A], "PRIVATE SUB *")
    If LISTA.count > 0 Then
      TreeView1.Add(ruta & "/sub/privadas/" & LISTA[0], LISTA[0] & " en " & Str$(a),, ruta & "/sub/privadas")
      Continue
    Endif

    'compruebo patron: "PUBLIC FUNCTION *"
    LISTA = Scan(lineas[A], "PUBLIC FUNCTION *")
    If LISTA.count > 0 Then
      TreeView1.Add(ruta & "/function/publicas/" & LISTA[0], LISTA[0] & " en " & Str$(a),, ruta & "/function/publicas")
      Continue
    Endif

    LISTA = Scan(lineas[A], "PRIVATE FUNCTION *")
    If LISTA.count > 0 Then
      TreeView1.Add(ruta & "/function/privadas/" & LISTA[0], LISTA[0] & " en " & Str$(a),, ruta & "/function/privadas")
      Continue
    Endif

    LISTA = Scan(lineas[A], "DIM * AS *")
    If LISTA.count > 0 Then
      If TreeView1.Exist(ruta & "/variables/local/" & LISTA[0]) Then
        datoanterior = TreeView1[ruta & "/variables/local/" & LISTA[0]].Text

        datoanterior &= ", " & Str$(a)
        TreeView1.Remove(ruta & "/variables/local/" & LISTA[0])
        TreeView1.Add(ruta & "/variables/local/" & LISTA[0], datoanterior,, ruta & "/variables/local")

        Continue
      Else
        TreeView1.Add(ruta & "/variables/local/" & LISTA[0], LISTA[0] & " en " & Str$(a),, ruta & "/variables/local")

        Continue
      Endif

      Continue
    Endif

    LISTA = Scan(lineas[A], "PUBLIC * As *")
    If LISTA.count > 0 Then
      TreeView1.Add(ruta & "/variables/publicas/" & LISTA[0], LISTA[0] & " en " & Str$(a),, ruta & "/variables/publicas")
      Continue
    Endif

    LISTA = Scan(lineas[A], "PRIVATE * As *")
    If LISTA.count > 0 Then
      TreeView1.Add(ruta & "/variables/privadas/" & LISTA[0], LISTA[0] & " en " & Str$(a),, ruta & "/variables/privadas")
      Continue
    Endif

  Next

Como veis uso la orden SCAN para ir "filtrando" y sacar la informacion (nombre de las funciones, subrutinas,y variables) de cada linea de código del proyecto.

Os dejo una captura de pantalla de la información que se obtiene:

 analisis_proyecto_gambas

AnalisisProyecto-0.0.1.tar.gz
Descripción: Sistema para listar funciones, subrutinas y variables que usa cada archivo de clase y módulo de un proyecto realizado en gambas3 
Descargar
Nombre del archivo: AnalisisProyecto-0.0.1.tar.gz
Tamaño: 5.83 KB
Descargado: 16 veces
AnalisisProyecto-0.0.1.tar.gz
Descripción: Sistema para listar funciones, subrutinas y variables que usa cada archivo de clase y módulo de un proyecto realizado en gambas3 
Descargar
Nombre del archivo: AnalisisProyecto-0.0.1.tar.gz
Tamaño: 5.83 KB
Descargado: 16 veces
AnalisisProyecto-0.0.1.tar.gz
Descripción: Sistema para listar funciones, subrutinas y variables que usa cada archivo de clase y módulo de un proyecto realizado en gambas3 
Descargar
Nombre del archivo: AnalisisProyecto-0.0.1.tar.gz
Tamaño: 5.83 KB
Descargado: 16 veces

 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Funcion Scan 
 
Está chulo, pero ¿por qué usas mayúsculas en el texto de los patrones que pasas a la función Scan?

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: Funcion Scan 
 
Jguardon:

¿por qué usas mayúsculas en el texto de los patrones que pasas a la función Scan?
Pues esta mañana me dio problemas usando minusculas, y con mayusculas no me los dio, por eso lo he dejado en masyusculas.


Nota:
Le he incorcorporado una pequeña mejora, con los iconos de funcion, propiedades, eventos...

 navegador_proyecto

AnalisisProyecto-0.0.2.tar.gz
Descripción: Ver estructura de funciones, varaibles y eventos dentro de las clases de un proyecto 
Descargar
Nombre del archivo: AnalisisProyecto-0.0.2.tar.gz
Tamaño: 13.15 KB
Descargado: 22 veces
AnalisisProyecto-0.0.2.tar.gz
Descripción: Ver estructura de funciones, varaibles y eventos dentro de las clases de un proyecto 
Descargar
Nombre del archivo: AnalisisProyecto-0.0.2.tar.gz
Tamaño: 13.15 KB
Descargado: 22 veces
AnalisisProyecto-0.0.2.tar.gz
Descripción: Ver estructura de funciones, varaibles y eventos dentro de las clases de un proyecto 
Descargar
Nombre del archivo: AnalisisProyecto-0.0.2.tar.gz
Tamaño: 13.15 KB
Descargado: 22 veces

 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Funcion Scan 
 
Vuott:

Pues es lo más parecido a un split.  

Public Sub PruebaScan()
  
  Dim frase As String
  Dim palabra As String
  
  frase = "A Vuott no le gustan las serpientes"  
  For Each palabra In Scan(frase, "* * *")
    Print palabra; "|";
  Next
  
End
 


Salida:

A|Vuott|no le gustan las serpientes|

Ha ido dividiendo por espacios y el ultimo ya no lo divide más por no tener mas asteriscos.

Julio:

Esta muy bien el ejemplo. Sería bueno añadir una leyenda para recordar que es la simbología y los colores (que solíamos ver en Gambas2).
Me quedo con el segundo ejemplo, que está aun mas chulo.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Funcion Scan 
 
Shell:
Citar:
Pues es lo más parecido a un split

Como ves en mi ejemplo, es muchísimo más potente que el split.   

Citar:
Sería bueno añadir una leyenda para recordar que es la simbología y los colores

Si ves el codigo fuente del programa, en la carpeta datos, tiene los nombre de cada iconito. Los he cogido del codigo fuente de gambas3, y creo que he usado los correctos, aunque hay algunos que tengo dudas...

Saludos
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Funcion Scan 
 
Julio:

jsbsan escribió: [Ver mensaje]
Shell:
Citar:
Pues es lo más parecido a un split

Como ves en mi ejemplo, es muchísimo más potente que el split.   


En el ejemplo de la wiki de gambas, hace uso de split y de scan, de ahí la pequeña confusión.
El código necesito verlo con tranquilidad. Hoy día 7 de octubre es fiesta en Cádiz. Día de la patrona.
La virgen del Rosario. Lo que es para mi mas trabajo que un día normal. Aunque es una fiesta local,
espero al menos que los compañeros de hostelería hagan un buen día.

Shell escribió: 
  Sería bueno añadir una leyenda para recordar que es la simbología y los colores

jsbsan escribió: 
Si ves el codigo fuente del programa, en la carpeta datos, tiene los nombre de cada iconito. Los he cogido del codigo fuente de gambas3, y creo que he usado los correctos, aunque hay algunos que tengo dudas...


En ese momento cuando escribía aun no había abierto el código.Se puede ver perfectamente lo que es con los nombres de los iconos.
Aplicaciones como la tuya serian muy útiles como complemento en gambas!.

( Tampoco es cuestión de poner ejemplos muy grandes para explicar algo..  jeje.   )
Por ejemplo la frase o cadena de Vuott, parece chino mandarín!.

Si hablásemos así:
" Pues estaba yo "espacio", comiendo un "almohadilla" bocata, de "separador" jamón serrano, a un precio "porcentaje" económico "

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Funcion Scan 
 
Shell escribió: [Ver mensaje]
Pues es lo más parecido a un split.


Public Sub Main()

 Dim frase As String
 Dim palabra As String
  
  frase = "A Vuott le gustan las serpientes, pero prefiere el C "
  For Each palabra In Scan(frase, "* ** **")
    Print palabra; "|";
  Next

End


    


Saludos
 



 
vuott - 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 Devolver Un Array En Una Funcion mato General 1 Sabado, 07 Agosto 2010, 03:26 Ver último mensaje
fabianfv
No hay nuevos mensajes Ayuda Con Funcion jesusdaredevil General 2 Lunes, 22 Agosto 2011, 22:19 Ver último mensaje
ljma
No hay nuevos mensajes Error En Funcion Matematica Agamenon General 1 Martes, 13 Marzo 2012, 02:19 Ver último mensaje
razaAztk
No hay nuevos mensajes Funcion Que Devuelve Información De Un Ar... tincho Aplicaciones/Fragmentos de Código 2 Domingo, 22 Diciembre 2019, 20:58 Ver último mensaje
vuott
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

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