He encontrado esto. pero no se como usarlo en esta linea:
replace TEXTO with memoedit (TEXTO, 3, 1, 20, 39, .T.,"CASCOS")
para que me reparta los espacios en blanco.
**********************************
Distribuir un texto en renglones
La rutina GRAPPA ha sido probada para que suministre una matriz donde cada elemento corresponde a un renglón, de modo que cada uno contenga palabras enteras, salvo que haya alguna cuyo largo sea mayor que el indicado en nCaracteres; en ese caso se trunca la palabra larga. Si hay retornos de carro intercalados -chr(13)+chr(10)- se los toma como un renglón más, en blanco.
Uso:
GRAPPA(cTexto, nCarac) -> aTexto
cTexto es la cadena de caracteres que hay que poner en renglones.
nCarac es el número de caracteres que tendrá como máximo cada renglón.
aTexto es una matriz de caracteres, donde cada elemento mide nCarac, el texto de cada renglón está recostado sobre la izquierda y está rellenado a la derecha con blancos.
--------------------------------------------------------------------------------
********** Devuelve una matriz con elementos/renglones de nCaracteres cada uno.
FUNC GRAPPA(cCadena, nCaracteres)
LOCAL aTexto := {}
LOCAL nCont := 0
LOCAL lMuyLarga := .F.
cCadena := IF(cCadena == NIL, '', LTRIM(cCadena))
nCaracteres := IF(nCaracteres == NIL, 0, nCaracteres)
IF nCaracteres > 0
IF LEN(cCadena) > nCaracteres
WHILE LEN(cCadena) > 0
WHILE chr(13)+chr(10) $ LEFT(cCadena, nCaracteres)
IF LEFT(cCadena,2) == chr(13) + chr(10)
AADD(aTexto, SPACE(nCaracteres))
ELSE
AADD(aTexto, PADR(LEFT(cCadena,AT(chr(13)+chr(10),cCadena)-1), nCaracteres))
ENDIF
cCadena := SUBSTR(cCadena, AT(chr(13)+chr(10),cCadena)+2)
ENDDO
IF LEN(cCadena) <= nCaracteres
AADD(aTexto, PADR(cCadena, nCaracteres))
EXIT
ELSE
IF SUBSTR(cCadena, nCaracteres, 1) == ' ' .OR. ;
SUBSTR(cCadena, nCaracteres+1, 1) == ' ' .OR. ;
SUBSTR(cCadena, nCaracteres, 1) == CHR(13) .OR. ;
SUBSTR(cCadena, nCaracteres+1, 1) == CHR(13)
* El último carácter o el primero del siguiente es justo
* un espacio en blanco o un retorno de carro
IF SUBSTR(cCadena, nCaracteres, 1) == CHR(13)
AADD(aTexto, PADR(LEFT(cCadena, nCaracteres-1), nCaracteres))
cCadena := LTRIM(SUBSTR(cCadena, nCaracteres))
ELSE
AADD(aTexto, PADR(LEFT(cCadena, nCaracteres), nCaracteres))
cCadena := LTRIM(SUBSTR(cCadena, nCaracteres + 1))
ENDIF
ELSE
nCont := nCaracteres
lMuyLarga := .T.
WHILE --nCont > 0
IF SUBSTR(cCadena, nCont, 1 ) == ' ' .OR. ;
SUBSTR(cCadena, nCont, 1 ) == CHR(13)
IF nCont == 1
IF SUBSTR(cCadena, nCont, 1) == CHR(13)
AADD(aTexto, SPACE(nCaracteres))
cCadena := LTRIM(SUBSTR(cCadena, 3))
ELSE
cCadena := LTRIM(SUBSTR(cCadena, 2))
ENDIF
ELSE
IF SUBSTR(cCadena, nCont, 1 ) == CHR(13)
AADD(aTexto, PADR(LEFT(cCadena, nCont-1), nCaracteres))
cCadena := LTRIM(SUBSTR(cCadena, nCont))
ELSE
AADD(aTexto, PADR(LEFT(cCadena, nCont), nCaracteres))
cCadena := LTRIM(SUBSTR(cCadena, nCont + 1))
ENDIF
lMuyLarga := .F.
ENDIF
EXIT
ENDIF
ENDDO
IF lMuyLarga
AADD(aTexto, PADR(LEFT(cCadena, nCaracteres), nCaracteres))
cCadena := LTRIM(SUBSTR(cCadena, nCaracteres + 1))
ENDIF
ENDIF
ENDIF
ENDDO
ELSE
AADD(aTexto, cCadena)
ENDIF
ELSE
AADD(aTexto, '')
ENDIF
RETURN(aTexto)