Shell 30-11-2023, 12:59
Buenas!.

Estoy viendo la aplicación de Alberto.

Quiero buscar la palabra "CAJA" pero no quiero que se muestren palabras que contengan estas.
Por ejemplo no quiero que en los resultados de la búsqueda me muestre DIARIOCAJA ó BDCajaseguridad

He probado a marcar la opción Sólo palabras, pero no es la adecuada.

Creo que lo ideal es usar una expresión regular, pero no sé como se usan en el menú de búsquedas de Gambas.
Os muestro un ejemplo desde la línea de comandos.

Desde el menú de herramientas de Gambas, abro una terminal. Ahora estoy en el directorio raíz del proyecto.
Como sé que las fuentes del proyecto se encuentran en .src me voy a este.

Código:
cd .src

Ok, ahora vamos a usar el comando grep del shell de Linux.
En esta parte voy a buscar la palabra "CAJA" en todos los archivos del directorio fuente del proyecto.

Código:
grep -e 'CAJA' *

Me muestra: ( A ver como se muestra el Copy & Paste )
 
Cita: 
FMain.class:    TablaContactos = Conexion.Exec("Select * from DIARIOCAJA")
FMain.class:    TablaContactos = conexion.Exec("select * from DIARIOCAJA")
FMain.class:    TablaContactos = Conexion.Exec("Select * from DIARIOCAJA")
FMain.class:  TablaContactos = Conexion.Exec("Select * from DIARIOCAJA")
FMain.class:  VarResult = Conexion.Create("DIARIOCAJA")
FMain.class:  TablaContactos = Conexion.Exec("Select * from DIARIOCAJA")
FMain.class:  ' resultados = Conexion.Exec("Select sum(SALDO) TOTAL from DIARIOCAJA") 'OBTENEMOS LA SUMA TOTAL DEL CAMPO
FMain.class:  ruta = Application.Path &/ "CAJA"
FMain.class:  rutacopia = Application.Dir &/ "BDCAJAseguridad"
FMain.class:    Shell "cp /home/alberrto/Diariodecaja/*  /home/alberrto/BDCAJAseguridad"
FMain.class:    Shell "cp /home/alberrto/BDCAJAseguridad/*  /home/alberrto/Diariodecaja"
FMain.class:    Shell "mkdir /home/alberrto/BDCAJAseguridad"
FMain.class:    Shell "cp /home/alberrto/Diariodecaja/*  /home/alberrto/BDCAJAseguridad"
FMain.form:      Text = ("COPIA SEGURIDAD BASE DATOS CAJA")
frmes.class:    TablaContac = ConnX.Exec("Select * from DIARIOCAJA")
frmes.class:      TablaContac = ConnX.Exec("Select * from DIARIOCAJA where mes='" & TextBox1.text & "' ")
ModSQL.module:    .name = "CAJA"
reportdiarioenero.class:    TablaContactos = Con.Exec("Select * from DIARIOCAJA")
reportdiarioenero.class:  hRes1 = Con.Exec("Select * from DIARIOCAJA ")
Reportpormes.class:    TablaContactos = Con.Exec("Select * from DIARIOCAJA  ")
Reportpormes.class:  hRes1 = Con.Exec("Select * from DIARIOCAJA where MES='" & text1 & "' ")

Fijaros que muestra la palabra  pero esta contenida en otras.

Ahora vamos a usar una opción que tiene el comando Grep para que la búsqueda sea más exacta.

Código:
grep -w 'CAJA' *

Ahora se muestra esto:
 
Cita: 
Main.class:  ruta = Application.Path &/ "CAJA"
FMain.form:      Text = ("COPIA SEGURIDAD BASE DATOS CAJA")
ModSQL.module:    .name = "CAJA"

Preguntas.

¿ La característica de usar expresiones regulares en el buscador del editor de Gambas está activa ?
( Incluso si se tuviese que añadir al proyecto el componente gb.pcre ).
Encontré una referencia en la lista internacional pero es del año 2021!! y no hubo más respuestas. ( Nada concreto )
Si se supone que se muestra la opción, la característica debería estar incorporada, no es un adorno. Huh

¿ Cómo se usan las expresiones regulares en el menú de búsquedas del editor de Gambas ?. ( Con esta me conformo ). Wink

¿ Cómo podría hacer eso directamente en el menú de búsquedas del editor de Gambas ?. ( No es necesario. Me gusta complicarme.  Rolleyes )

Saludos

Revisando el código fuente de Gambas donde vemos la carpeta "Search".
Usa el comando grep aparentemente.

He usado esto y la respuesta es muy aproximado a lo que quiero.

[Imagen: jzAX6G3.png]

La salida fue:

[Imagen: N8AylOI.png]

Falta este, pero debe ser por la construcción de la expresión regular.
 
Cita:Main.form:      Text = ("COPIA SEGURIDAD BASE DATOS CAJA")


Por cierto, los paréntesis que muestro en la búsqueda no son necesarios. Con "CAJA", es suficiente.

No me convence. Esta buscando "CAJA" con las comillas incluidas

Esta es la función o procedimiento que usa el código fuente de Gambas para usar Grep.

Código:
Private Sub GrepFile(sPath As String, Optional bUseReplaceString As Boolean)
 
  Dim sText As String
  Dim aGrep As String[]
  Dim sGrep As String
  Dim sFind As String
  Dim sTemp As String
  ' Dim iAge As Integer
  ' Dim hGrepResult As CGrepResult
  Dim iPos As Integer
  Dim sSearch As String
  Dim hFile As Object
  Dim sResult As String
  Dim iFilePos As Integer
  Dim hEditor As TextEditor

  hFile = Project.Files[sPath]
 
  If sPath Then
    If Not hFile Or If Not hFile.IsModified() Then
      sTemp = sPath 'Project.GetUncompressedPath(sPath, True)
    Endif
  Endif
    
  If Not sTemp Then
    Try hEditor = hFile.GetEditor()
    If hEditor Then Object.Lock(hEditor)
    Try sText = hFile.GetText()
    If hEditor Then Object.Unlock(hEditor)
    If Not sText Then Return
    sTemp = Temp$("grep")
    File.Save(sTemp, sText)
  Endif

  aGrep = ["grep", "-nobs"]
 
  If bUseReplaceString Then
    ' aGrep.Add("-F")
    ' aGrep.Add("--")
    ' aGrep.Add(ReplaceString)
  Else
    If IgnoreCase Then aGrep.Add("-i")
    If RegularExpression Then
      aGrep.Add("-E")
    Else If WordsOnly Then
      aGrep.Add("-E")
    Else
      aGrep.Add("-F")
    Endif
    aGrep.Add("--")
    
    sSearch = Search
    If WordsOnly Then sSearch = "(^|[^_$[:alnum:]])" & Project.GrepQuote(Search) & "($|[^_$[:alnum:]])"
    aGrep.Add(sSearch)
  Endif
 
  aGrep.Add(sTemp)
 
  'grep -nR -F -I -i -w -ob --exclude=*~ --exclude-dir=.svn -s -- "Date" * .src
 
  Exec aGrep To sGrep

  For Each sFind In Split(sGrep, "\n", "", True)
    
    iPos = InStr(sFind, ":")
    If iPos = 0 Then Continue
    
    sResult = CStr(CInt(Left(sFind, iPos - 1)))
    sFind = Mid$(sFind, iPos + 1)
    
    iPos = InStr(sFind, ":")
    If iPos = 0 Then Continue
    
    iFilePos = CInt(Left(sFind, iPos - 1))
    sFind = Mid$(sFind, iPos + 1)

    If WordsOnly Then
      If IgnoreCase Then
        If String.LCase(sFind) Not Begins String.LCase(Search) Then iFilePos += String.Len(String.Left(sFind))
      Else
        If sFind Not Begins Search Then iFilePos += String.Len(String.Left(sFind))
      Endif
      sFind = Search
    Endif
    
    sResult &= ":" & CStr(iFilePos)

    sResult &= ":" & CStr(Len(sFind)) & ":" & CStr(String.Len(sFind)) '& ":" & sFind
    Print sResult
    Flush
    'Sleep 0.005
    
  Next
 
End

Eso es. Marca la opción solo palabras.

[Imagen: avnux3j.png]

Salida:

[Imagen: DIw8mJi.png]

Osea, usa el comando grep probablemente con expresiones regulares ( dentro de lo posible ), pero
no es necesario marcar la opción. Huh
alberto-moyano 29-11-2023, 12:49
Hola gente, estoy haciendo una consulta en SQLite con este código

Código:
  Dim tituloEscapado As String

  tituloEscapado = Replace(txtTITLE.Text, "'", "''")

  Comando = "SELECT * FROM bibtex WHERE title = '" & tituloEscapado & "'"

  Busqueda = Conn.Exec(Comando)

las consultas funcionan bien, salvo que necesito que NO distinga entre mayúsculas y minúsculas, he probado con LOWER para convertir toda la cadena a minúsculas en la consulta, pero no logro el cometido.

Alguna sugerencia.

Gracias de antemano
Alberto59 28-11-2023, 13:53
Por favor podeis ayudarme-

Como posiciono la ultima fila en un Tableview.


Gracias.
Páginas (557):    1 115 116 117 118 119 557   
Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.
Recordarme?
Miembros: 284
Último miembro: VALENTIN KORONADO
Temas del foro: 1,719
Mensajes del foro: 8,923
Últimos temas
Un sistema de ayudas cont...
Foro: Videotutoriales
Último mensaje por: guizans, Ayer, 19:55
Respuestas: 3 - Vistas: 182
Publicidad
Foro: Sobre gambas-es.org
Último mensaje por: Shordi, 18-06-2025, 07:35
Respuestas: 5 - Vistas: 171
Web con gambas, a ver si ...
Foro: WebApp/WebForms
Último mensaje por: jackrobot, 16-06-2025, 17:11
Respuestas: 40 - Vistas: 31,764
Crear una aplicación para...
Foro: Bases de Datos
Último mensaje por: Shell, 29-05-2025, 20:11
Respuestas: 11 - Vistas: 1,223
Paso de parámetros a una ...
Foro: General
Último mensaje por: guizans, 29-05-2025, 19:27
Respuestas: 9 - Vistas: 753
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.