PDA

Ver la Versión Completa : como busco un string en un campo memo


nvalerio
15-04-2004, 00:11:53
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:


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
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
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
Ahi te va otra forma de hacerlo...

usaremos un TRichEdit en lugar del memo


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 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
[QUOTE=roman]Puedes hacerlo con una consulta SQL:


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
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:
$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