domingo, 3 de maio de 2009

String - Instring

Texto CLASS
Frase String(200), PROTECTED
Palabra String(20), PROTECTED
Puntero Short, PROTECTED
Delimitadores String(20), PRIVATE

Construct PROCEDURE
Inicio PROCEDURE(String Frase)
SigPalabra PROCEDURE, String
END


Texto.Construct PROCEDURE()
CODE
!cualquiera de estos caracteres pueden separar palabras
SELF.Delimitadores = ' ,;.-()][}{{_:<<>\/@#ºª^?¿¡!|"'''
SELF.Puntero = 1

Texto.Inicio PROCEDURE(String Frase)
CODE
SELF.Puntero = 1
SELF.Frase = Frase

Texto.SigPalabra PROCEDURE()
DESDE SHORT
HASTA SHORT
LETRA STRING(1)
CODE
SELF.Palabra = ''
!primero busco donde comienza la siguiente palabra (elimino delimitadores)
LOOP DESDE = SELF.Puntero TO 200
IF NOT INSTRING(SUB(SELF.Frase,DESDE,1), SELF.Delimitadores,1,1)
THEN BREAK.
END

LOOP HASTA = DESDE TO 200
Letra = SUB(SELF.Frase,HASTA,1)
IF INSTRING(Letra, SELF.Delimitadores,1,1)
BREAK
ELSE
SELF.Palabra = CLIP(SELF.Palabra) & Letra
END
END
SELF.Puntero = HASTA + 1
RETURN(SELF.Frase[Desde : Hasta])

Nenhum comentário:

Postar um comentário