PDA

Ver la Versión Completa : buscar con pos


migueilichenco
05-09-2003, 23:13:25
hola,

hola a todos bueno ahora estoy de nuevo con una nueva pregunta ;) espero su amable paciencia y su ayuda , mi problema es el siguiente

1) tengo un memo con una lista de palabras
2)tengo un edit con una cadena X

ahora yo deseo hacer que el programa busque en la cadena del edit las palabras de la lista del memo

espero su ayuda y gracias de antemano

Julià T.
06-09-2003, 02:28:19
Quiza la función que buscas es PosEX que a diferencia de pos, permite buscar a partir de una posición.

migueilichenco
06-09-2003, 03:27:54
no entiendo ¿?

Julià T.
06-09-2003, 03:55:44
pos si el problema no esta en el pos como parece indicar el enunciado, pos debe estar en recorrer el memo. ¿digo yo?

algo parecido a lo siguiente debe ser lo que buscas

for i:=0 to memo1.count-1 do
Posicion=Pos(memo1.lines[i],Edit1.text);

migueilichenco
06-09-2003, 04:46:55
me sale indeclarado 'count'

pero mejor repito la pregunta


1) tengo un memo con una lista de palabras
2)tengo un edit con una cadena X

ahora yo deseo hacer que el programa busque en la cadena del edit las palabras de la lista del memo

y cuando la encuentre suseda alguna accion
gracias de antemano

Julià T.
06-09-2003, 06:16:08
le falta el lines

for i:=0 to memo1.lines.count-1 do
Posicion=Pos(memo1.lines[i],Edit1.text);

migueilichenco
06-09-2003, 08:17:18
holas,

bueno hiso lo establesido arriba y cuando corro el programa solo detecta a la ultima palabra de la lista, y a las demas palabras de la lista no las chekea

gracias de antemano

marcoszorrilla
06-09-2003, 15:42:57
El asunto creo que consta de dos partes:
1.- Extraer las palabras del Edit y guardarlas en otro lugar, en el ejemplo un Listbox.

2.- Comprobar si las palabras ubicadas en el listbox se encuentran en el campo memo.

Aquí tienes un ejemplo que consta de dos botones, con uno pasamos las palabras al listbox, he considerado que el separador es el espacio en blanco.

Y con el otro buscamos dichas ocurrencias.



procedure TForm1.Button1Click(Sender: TObject);
var
i:Integer;
j:Integer;
Posicion:Integer;
begin

for j:= 0 to listbox1.Items.Count - 1 do
begin

for i:=0 to memo1.lines.count-1 do
begin

if Pos(Listbox1.Items[j],memo1.lines[i]) <> 0 then
begin
ShowMessage('Encontrada '+Listbox1.Items[j]);
end;
end;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
nBlanco:Integer;
nCont:integer;
cPalabra:String;
begin
for nCont:=1 to Length(Edit1.text) do
begin
cPalabra:=cPalabra + edit1.text[nCont];

if edit1.text[nCont] = ' ' then
begin
ListBox1.Items.Add(cPalabra);
cPalabra:=''
end;
end;
ListBox1.Items.Add(cPalabra);

end;



Un Saludo.

migueilichenco
06-09-2003, 18:33:33
hola,

bueno tras relisados los pasos arriba descritos surgio un problema el cual es que cuando ejecuto el programa aunque se encuentren las paalbras siempre me sale que la decision es igual a ¿? y segun lo que yo queria hacer es que cuando escuentre en el memo1 diga si en el memo2 diga no y si no ahy la palabra diga ¿? bueno ese es mi problema les agradeceria una manita
________________________________________________
code

procedure TForm1.Button1Click(Sender: TObject);

var

i:Integer;
j:Integer;
Posicion:Integer;
nBlanco:Integer;
nCont:integer;
cPalabra:String;

begin

richedit1.Lines.Add(usuario+': '+edit1.text);
begin
for nCont:=1 to Length(Edit1.text) do
begin
cPalabra:=cPalabra + edit1.text[nCont];

if edit1.text[nCont] = ' ' then
begin
ListBox1.Items.Add(cPalabra);
cPalabra:=''

end;

end;

ListBox1.Items.Add(cPalabra);

end;

begin

for j:= 0 to listbox1.Items.Count - 1 do
begin

for i:=0 to memo1.lines.count-1 do
begin

if Pos(Listbox1.Items[j],memo1.lines[i]) <> 0 then
decision:='no '
else
if Pos(Listbox1.Items[j],memo2.lines[i]) <> 0 then
decision:='si '
else
if not(Pos(Listbox1.Items[j],memo2.lines[i])<> 0) then
decision:='¿? '
end;
end;
end;

Edit1.Text := StringReplace(Edit1.Text, 'eres', decision+'soy', [rfReplaceAll,rfIgnoreCase]);
Edit1.Text := StringReplace(Edit1.Text, 'tu', 'yo', [rfReplaceAll,rfIgnoreCase]);
richedit1.Lines.Add('BIA1X'+': '+edit1.text);
edit1.Clear;
listbox1.Clear;
end;
___________________________________________________

gracias de antemano

migueilichenco
08-09-2003, 16:41:53
hola agrdeceria si alguien me da una mano con la pregunta que formulo gracias de antemano