PDA

Ver la Versión Completa : Mas dudas con el Memo


bustio
26-10-2004, 05:28:45
Hola nuevamente:

Lo que necesito hacer con el memo es crear una funcion que me parsee el contenido del memo; es decir, que lo recorra linea a linea y me ponga dentro de un StringList todas las palabras y simbolos que este tiene(estas palabras y simbolos tienen que estar con al menos un espacio antes y despues de la primera y ultima letra). Utilice esta variante pero no me hace el efecto deseado. Si alguien tiene alguna otra variante mas efectiva, agradezco la ayuda.

GRACIAS!!!


type
TSeparator = set of char;

...............


function GetTokens(s:string; separators: TSeparator): TStringList;
var
slist: TStringList;
test, token: string;
begin
slist := TStringList.create;
test := s;
result := slist;
while (Length(Test)>0) do
begin
while (Length(Test)>0) and (test[1] in separators) do
Delete(test,1,1);
if (Length(Test)=0) then
exit;
token := '';
while (Length(Test)>0) and (not (test[1] in separators)) do
begin
token := token + test[1];
Delete(test,1,1);
end;
slist.add(token);
end;
end;

Neftali [Germán.Estévez]
26-10-2004, 09:51:07
...Utilice esta variante pero no me hace el efecto deseado. Si alguien tiene alguna otra variante mas efectiva, agradezco la ayuda.
Exactamente a qué te refieres con que "No te hace el efecto deseado"; Ëste código funciona perfectamente (o al menos a mi si); Si a tí no te sirve comeéntanos porqué no te funciona; Lo he utilizado de la siguiente forma:



// Colocando en un Form un MEMO (con el texto) y un LISTBOX
// para el resultado (palabras).

var
TS:TStringList;
Str:String;
...

// Eliminamos los posibles "saltos de carro"
Str := AnsiReplaceStr(Memo1.Lines.Text, #13#10, ' ');
// Los TOKENS van a parar a TS
TS := GetTokens(Str, [' ']);
// Limpiamos el ListBox
ListBox1.Items.Clear;
// Añadimos los tokens
ListBox1.Items.AddStrings(TS);

...

bustio
26-10-2004, 16:23:11
HOla:
primero y ante todo, debo darte las gracias por tomarte el trabajo de revisarme el codigo. En realidad lo que sucede es que a veces no me toma la ultima palabra de la linea string que le paso. Pero debe ser algun mal uso dentro del ciclo que lo emplea.
MUCHAS GRACIAS!!!