Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Mas dudas con el Memo (https://www.clubdelphi.com/foros/showthread.php?t=15508)

bustio 26-10-2004 05:28:45

Parser para un Memo
 
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!!!

Código:

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

Cita:

Empezado por bustio
...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:

Código Delphi [-]
 
// 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

Respondiendo ,,,,
 
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!!!


La franja horaria es GMT +2. Ahora son las 16:46:54.

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