Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Busqueda de texto (https://www.clubdelphi.com/foros/showthread.php?t=79661)

Gerson12 27-07-2012 06:10:59

Busqueda de texto
 
1 Archivos Adjunto(s)
hola amigos de clubdelphi vengo a expresarles una duda que tengo ya que la verdad estoy aprendiendo mucho de este foro y gran ayuda de un amigo ,bueno vamos al grano lo que quiero hacer es una aplicación que busque textos que se le pondra en un edit y el texto sera buscado en un memo pero lo que me crea dificultad es que quiero que el edit solo sea una parte del texto a buscar ahora les dejare un ejemplo.

Ejemplo:


como dije quiero que el edit sea solo una parte de texto a seleccionar pero lo malo es quiero que 'file:' y'exe' sean como textos predeterminados de busqueda


Gracias
Espero que me hayan entendido eh echo lo mejor posible para q me entiendan gracias

roman 27-07-2012 06:19:42

No estoy seguro de entender pero vamos a ver. Si quieres buscar lo que está en el edit dentro del memo, sólo tendrías que poner:

Código Delphi [-]
Start := Pos(Edit.Text, Memo.Text);
if Start > 0 then
begin
  Memo.SelStart := Start;
  Memo.SelLength := Length(Edit.Text);
end;

Pero si quieres buscar el texto del edit pero sólo si está con el texto predeterminado, puedes concatenar dicho texto al momento de buscar:


Código Delphi [-]
Start := Pos('file:' + Edit.Text + '.exe', Memo.Text);
if Start > 0 then
begin
  Memo.SelStart := Start + Length('file:');
  Memo.SelLength := Length(Edit.Text);
end;

// Saludos

Gerson12 27-07-2012 06:30:13

Cita:

Empezado por roman (Mensaje 438300)
No estoy seguro de entender pero vamos a ver. Si quieres buscar lo que está en el edit dentro del memo, sólo tendrías que poner:

Código Delphi [-]
Start := Pos(Edit.Text, Memo.Text);
if Start > 0 then
begin
  Memo.SelStart := Start;
  Memo.SelLength := Length(Edit.Text);
end;

Pero si quieres buscar el texto del edit pero sólo si está con el texto predeterminado, puedes concatenar dicho texto al momento de buscar:


Código Delphi [-]
Start := Pos('file:' + Edit.Text + '.exe', Memo.Text);
if Start > 0 then
begin
  Memo.SelStart := Start + Length('file:');
  Memo.SelLength := Length(Edit.Text);
end;

// Saludos

gracias por la respuesta lo provare pero antes disculpame pero otra pregunta
como haria para agregar a otro memo el texto seleccionado por la busqueda

roman 27-07-2012 06:59:02

Podrías agregarlo como una nueva línea:

Código Delphi [-]
OtroMemo.Lines.Add(Edit.Text);

// Saludos

Gerson12 27-07-2012 07:01:34

roman disculpa pero el codigo q me enseñas no me soombrea todo lo q quiero solo me sombre lo q esta en el edit lo q yo quiero es sobrear todo incluyendo file: y .exe

José Luis Garcí 27-07-2012 09:13:33

Gerson12, si lo que vas a introducir es la ruta completa, tendrias que modificar sólo al código que te expuso Román lo siguiente
Código Delphi [-]
Start := Pos('file:' + Edit.Text + '.exe', Memo.Text);
if Start > 0 then
begin
  Memo.SelStart := Start + Length('file:');
  Memo.SelLength := Length('File:'+Edit.Text+'.exe');
end;


En caso contrario te indico que es mejor que crees un tabla en memoria carges los datos y busques con un like en Sql.

Esper te sirva de algo la ayuda

roman 27-07-2012 16:18:20

Cita:

Empezado por Gerson12 (Mensaje 438304)
roman disculpa pero el codigo q me enseñas no me soombrea todo lo q quiero solo me sombre lo q esta en el edit lo q yo quiero es sobrear todo incluyendo file: y .exe

Pues es que así lo tienes en la imagen que pusiste ;) Si quieres sombrear todo entonces así:

Código Delphi [-]
Start := Pos('file:' + Edit.Text + '.exe', Memo.Text);
if Start > 0 then
begin
  Memo.SelStart := Start;
  Memo.SelLength := Length('file:' + Edit.Text + '.exe');
end;

// Saludos

Gerson12 28-07-2012 07:15:41

Cita:

Empezado por roman (Mensaje 438332)
Pues es que así lo tienes en la imagen que pusiste ;) Si quieres sombrear todo entonces así:

Código Delphi [-]
Start := Pos('file:' + Edit.Text + '.exe', Memo.Text);
if Start > 0 then
begin
  Memo.SelStart := Start;
  Memo.SelLength := Length('file:' + Edit.Text + '.exe');
end;

// Saludos

bueno gracias por sus respuesta pero como les dije anterior mente quiero q seleccione todo no solo una parte les dejo mi codigo
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
hotkey:integer;
begin
hotkey:=Pos('https://www'+Edit1.Text+'.com.pe',memo1.Text);
if hotkey>0 then
 Memo1.SelStart := hotkey;
  Memo1.SelLength := Length('https://www'+Edit1.Text+'.com.pe');
  Memo1.SetFocus;
end;
end.
else
begin
  ShowMessage ('no se encontro nada');

ecfisa 28-07-2012 08:43:39

Hola Gerson12.

A ver si entendí lo que buscas...

Supongamos que en Edit tenemos el texto:
Cita:

Un_Nombre_De_Pagina
En el Memo el siguiente texto:
Cita:

...
bla, bla, bla ...
bla, bla, ... https://www.Un_Nombre_De_Pagina.com.pe , bla, ..., etc
bla,bla,bla
...
Y queres que quede seleccionada la cadena "https://www.Un_Nombre_De_Pagina.com.pe".

Si no me equivoque, creo que podrías hacer:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  pd, ph: Integer;
begin
  pd:= Pos('https://www.' + Edit1.Text + '.com.pe', Memo1.Text);
  if pd > 0 then
  begin
    ph:= pd;
    Memo1.SelStart:= ph-1;
    while not(Memo1.Text[ph] in [#13,' ']) and (ph < Length(Memo1.Text)) do
      inc(ph);
    Memo1.SelLength:= ph - pd;
    Memo1.SetFocus;
  end;
end;

Saludos.

Gerson12 28-07-2012 08:50:21

hola gracias por responder pero el problema q tengo es q este mira en la imagen

me selecciona la pagina google y todo pero tambien selecciona otra partes mas eso es lo q yo no quiero
Pd: quiero q esta accion se haga varias veces para busque las paginas y las agrege a un memo

ecfisa 28-07-2012 09:10:50

Hola.

Tenes razón... entonces proba de este modo:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  p: Integer;
begin
  p:= Pos('https://www.' + Edit1.Text + '.com.pe', Memo1.Text);
  if p > 0 then
  begin
    Memo1.SelStart:= p - 1;
    Memo1.SelLength:= Length('https://www.' + Edit1.Text + '.com.pe');
    Memo1.SetFocus;
  end;
end;
Pero es claro que a menos que utilices variables en su lugar, siempre estarás limitado a buscar cadenas con el contenido 'https://www.' y '.com.pe'.

Saludos.

Gerson12 28-07-2012 15:18:21

gracias eficsa me salvastes era y disculpa me pudrieses decir como puedo hacer para q no solo seleccione a 1 sino a todos los textos buscados en este caso https.//www.google.com.pe en este caso pondre y paginas iguales a https.//www.google.com.pe y quiero q me seleccione todas y esas paginas me las agrege a un memo si no es mucha molesta me seria de mucha ayuda tu opinion gracias
Pd: a pero estoy usando variables en el codigo o a q te refieres con tu recomendacion:
Cita:

Pero es claro que a menos que utilices variables en su lugar, siempre estarás limitado a buscar cadenas con el contenido 'https://www.' y '.com.pe'.

ecfisa 28-07-2012 17:51:16

Hola Gerson12.

Cita:

Pd: a pero estoy usando variables en el codigo o a q te refieres con tu recomendacion:
Un ejemplo:
Código Delphi [-]
procedure TForm1.SeleccionarTexto(const Prefijo, Texto, Sufijo: string);
var
  p: Integer;
begin
  p:= Pos(Prefijo + Texto + Sufijo, Memo1.Text);
  if p > 0 then
  begin
    Memo1.SelStart:= p - 1;
    Memo1.SelLength:= Length(Prefijo + Texto + Sufijo);
    Memo1.SetFocus;
  end;
end;

Llamada:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  SeleccionarTexto('https://www.', Edit1.Text, '.com.pe');
end;
De ese modo si deseas buscar 'www.', '.com', '.com.es', etc, el procedimiento funcionará igual.

Saludos.

------------------------
Edito: Te pongo otro ejemplo que creo, deja mas en claro la flexibilidad de este modo:
Código Delphi [-]
 
  SeleccionarTexto(edPrefijo.Text, edTexto.Text, edSufijo.Text);

Gerson12 29-07-2012 01:41:44

ah te referias a eso gracias creia q era otra cosa ^^ porfa ayudame en esta ultima duda porfa
me pudrieses decir como puedo hacer para q no solo seleccione a 1 sino a todos los textos buscados en este caso https.//www.google.com.pe en este caso pondre y paginas iguales a https.//www.google.com.pe y quiero q me seleccione todas y esas paginas me las agrege a un memo

ecfisa 29-07-2012 02:17:10

Hola Gerson12.

Ya había leido tu inquietud en el mensaje #12, pero no respondí a ese punto, por que al menos a mi, no se me ocurre como realizar múltiples selecciones de texto en un TMemo del modo que venimos tratando.

Tal vez algún otro compañero conozca o se le ocurra la manera de lograrlo y nos eche un poco de luz. Lamento no poder ayudarte en eso...

Saludos. :)

Gerson12 29-07-2012 02:22:36

Cita:

Empezado por ecfisa (Mensaje 438414)
Hola Gerson12.

Ya había leido tu inquietud en el mensaje #12, pero no respondí a ese punto, por que al menos a mi, no se me ocurre como realizar múltiples selecciones de texto en un TMemo del modo que venimos tratando.

Tal vez algún otro compañero conozca o se le ocurra la manera de lograrlo y nos eche un poco de luz. Lamento no poder ayudarte en eso...

Saludos. :)

:( q lastima gracias entonces seguire buscando en internet algo q me pueda ayudar y gracias y disculpa esta es mi ultima inquietud por q pones el -1 en este codigo
Código Delphi [-]
 memo1.SelStart:=f-1;
Gracias ^^#:-)#

ecfisa 29-07-2012 02:58:57

Cita:

por q pones el -1 en este codigo
Hola Gerson12.

Por que la función Pos devuelve la posición del primer caracter de un string comenzando por la posición 1, pero la propiedad SelStart determina el primer caracter seleccionado a partir de la posición 0.

Saludos.

Gerson12 29-07-2012 03:34:34

gracias ^^ les agradesco mucho roman,eficsa,[José Luis Garcí] gracias a todos ^^

Gerson12 31-07-2012 02:30:08

Como Obtener cierto texto de un memo
 
hola amigos quisiera hacerles una pregunta es que segun eh visto por internet se puede obtener un texto de un memo supongamos que en el el texto esta escrito esto:
Código:

gfdg
df
gdf
g
dfgdfgdfg
holaamigosclubdelphi
dsf
sdfsdfsdfsdfsdf
sdfdsholaamigosclubdelphi

como veran yo quiero que el texto que dice'holaamigosclubdelphi' eso me obtenga y salga en otro memo
es posible hacer eso ¿?


Estuve averiguando y segun parece se tiene que usar settext o gettex pero realmente estoy confundido

roman 31-07-2012 02:41:33

Bueno, realmente esto ya lo preguntaste y se te respondió en el otro hilo. Detente a estudiar un poco las respuestas que te dimos para que aprendas a aplicar la técnica en este y otros casos.

//Saludos


La franja horaria es GMT +2. Ahora son las 23:12:04.

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