Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   como busco un string en un campo memo (https://www.clubdelphi.com/foros/showthread.php?t=9124)

nvalerio 15-04-2004 00:11:53

como busco un string en un campo memo
 
como hago para localizar una cadena de caracteres (string)en especifico en un campo de tipo memo, hasta ahora he podido localizar los datos del campo memo pero haciendo la consulta con la totalidad de caracteres del campo, pero no se como hacer la busqueda de un caracter en especifico en el campo memo, :confused: si me pueden ayudar...gracias

roman 15-04-2004 00:39:29

Puedes hacerlo con una consulta SQL:

Código:

select * from tabla
where campo_memo like "%cadena a buscar%"

Los comodines "%" no son necesarios en todas las bases de datos y pueden ser otros caracteres los que se usen. Ya dependerá de qué base estés usando.

// Saludos

the darkness 16-04-2004 16:02:27

como puedes controlar strings en los memos
 
es muy sencillo, cada memo cuenta con adiciones de string, por medio de este codigo
memo1.lines.add
por tanto para saber en que linea estas y hacer uso de dicha linea como una string lo haces por medio de esto
memo1.lines.strings[0];
los corchetes indican en que liea se encuentra el string que quieres manejar, por tanto ese es el control.
buena suerte

the darkness 16-04-2004 16:12:25

campos memos
 
esto del memo funciona de la misma manera con dbmemo.
así que pon un dbmemo y conectalo a la tabla correspondiente y crea un ciclo
mas o menos así
for i:=0 to dbmemo1.lines.capacity do // esto recorrera todo el dbmemo hasta el final de sus lineas.
if dbmemo1.lines.strings[i] = 'lo que busques' then
// y asi haces la comparacion.
suerte

sanxpue 16-04-2004 18:22:19

Otra forma
 
Ahi te va otra forma de hacerlo...

usaremos un TRichEdit en lugar del memo

Código:

Procedure TForm1....
Var
  Encontrado : LongInt;
  Desde, Hasta : Integer;
  Cad : String;
Begin
  Cad := 'Cadena a Buscar';
  RichEdit1.Lines.Assign(Tabla.FielByName('campoMemo'));
  //Ahora la busqueda
       
  If RichEdit1.SelLength <> 0 then
    Desde := RE1.SelStart + RE1.SelLength
  Else
    Desde := 0;
  Hasta := Length(RichEdit1.Text) - Desde;
  Encontrado := RichEdit1.FindText(Cad, Desde, Hasta, [stMatchCase]);
  If Encontrado <> -1 then
    ShowMessage('La palabra se encontro en : '+IntToStr(Encontrado))
  Else
    ShowMessage('No se encontro la palabra');
End;

Espero que te sirva
como siempre a tus ordenes y siempre con buena cara

roman 16-04-2004 18:25:04

Bueno, peroooo, ¿en qué momento dijo nvalerio que estaba buscando datos en un memo, dbmemo o richedit. Yo por campo memo entiendo un campo de una base de datos y por búsqueda en un campo memo entiendo búsqueda de registros con un texto determinado en dicho campo.

:confused:

// Saludos

sanxpue 16-04-2004 18:28:06

Asi es...
 
Asi es como dices compañero roman.. por eso pense..
si lo va a hacer con un memo y recorrerlo todo mejor le damos otra idea mas productiva no crees

ademas no le caeria mal otra forma de hacerlo je
;)
como siempre a sus ordenes y siempre con buena cara

nvalerio 16-04-2004 22:43:58

muy buenas recomendaciones ¡gracias!
 
[quote=roman]Puedes hacerlo con una consulta SQL:

Código:

select * from tabla
where campo_memo like "%cadena a buscar%"

Los comodines "%" no son necesarios en todas las bases de datos y pueden ser otros caracteres los que se usen. Ya dependerá de qué base estés usando.

gracias roman, the darkness y sanxpue por las recomendaciones y disculpen por haber repetido los hilos, me han servido de mucho la recomendaciones, me parece excelente este tipo de foro e intercambio de ideas... he notado que delphi tiene una gran potencialidad y nunca he dudado de ella, lo malo es no saber como sacarle provecho, pero gracias a estos foros se pueden intercambiar muchas ideas, como es posible que con access se pudiera hacer este tipo de busquedas y no con delphi...pero nunca dude....definitivamente delphi es lo maximo... de nuevo gracias...

Chalo78 07-02-2006 20:59:24

Misma Necesidad, distinto problema
 
Hola, Tal como han recomendado, busqué la información que necesitaba en el "Histórico", encontrando este hilo. El problema es que a diferencia de mi amigo nvalerio, yo solo deseo rescatar un dato de toda la línea del Memo.
Les cuento, estoy trabajando con Delphi7 en el rescate de información de un GPS Garmin modelo GPSmap168 y para ello estoy utilizando la librería que viene con el programa "ZylGPSRecDemo" de distribución gratuíta. Hasta ahora he logrado rescatar de manera independiente los datos de posición, dirección y altitud. Solo me falta de profundidad, el cual sale mezclado con otros datos en un Memo que se va actualizando cada dos segundos. No trabaja con DB ni nada por el estilo, solo genera un archivo .log en donde se guardan los caracteres tal y como los presenta el Memo.
He logrado identificar que la profundidad aparece cada 20 y 23 líneas de la siguiente forma, por ejemplo:
Código Delphi [-]
$SDDPT,7.90,0.00*59
En donde el dato que necesito es solamente "7.90", el cual deseo mostrar a través de un TLabel de otro Form.
Tal y como mencioné, este dato no siempre sale en las mismas lineas, es decir, al principio aparece en la línea 33, para luego saltarse 20 lineas (hasta la 53), luego aparece después de 23 líneas, luego aparece pasadas 23 líneas para finalmente aparecer nuevamente cada 20, es decir, se da la secuencia de 20, 23, 23, 20, 23, 23, 20....y así sucesivamente.
Intenté aplicar las recomendaciones que le dieron al anterior forista, pero no me resultaron. Quise hacerlo por medio de un DB pero tampoco me funcionó. He intentado muchas cosas y finalmente, luego de haber agotado las instancias recurro a los sabios de Delphi


La franja horaria es GMT +2. Ahora son las 10:59:00.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi