Eliminar enters al final de un campo memo.

541 views
Skip to first unread message

Rodolfo Arias

unread,
Oct 22, 2013, 1:40:44 PM10/22/13
to publice...@googlegroups.com
Estimados compa�eros, necesito su amable ayuda para que me den una idea
de como eliminar los enters "chr(13)" al final de un texto en un campo
memo, sin eliminar los enters entre p�rrafos, solo los del final . Por
ejemplo:

Titulo
chr(13)
Parrafo
chr(13)
Parrafo
chr(13)

Muchas gracias,


Rodolfo Arias
VFP9SP2

Fernando D. Bozzo

unread,
Oct 22, 2013, 1:57:26 PM10/22/13
to publice...@googlegroups.com
Hola Rodolfo:

Suponiendo que permitas líneas en blanco entre bloques de texto que querés preservar, podrias usar algo así:

LOCAL lnLineas, laLineas(1)

*-- 1) Paso el memo a líneas independientes

lnLineas = ALINES( laLineas, TuVariableMemo )

*-- 2) Analizo las líneas desde el final, quitando las vacías
FOR I = lnLineas TO 1 STEP -1
   IF EMPTY(laLineas(I))
     
lnLineas = lnLineas - 1
      DIMENSION( laLineas(
lnLineas) )
   ENDIF
ENDFOR

*-- 3) Vuelvo a armar el memo con las líneas individuales
TuVariableMemo = ''
FOR I = 1 TO lnLineas
  
TuVariableMemo = TuVariableMemo + laLineas(I) + CHR(13) + CHR(10)
ENDFOR


Listo!

Saludos.-

El martes, 22 de octubre de 2013 19:40:44 UTC+2, Fofo escribió:
Estimados compa�eros, necesito su amable ayuda para que me den una idea
de como eliminar los enters "chr(13)" al final de un texto en un campo
memo, sin eliminar los enters entre p�rrafos, solo los del final . Por

Fernando D. Bozzo

unread,
Oct 22, 2013, 2:00:10 PM10/22/13
to publice...@googlegroups.com
Para complementar, si no te interesa guardar ninguna línea en blanco, aunque sea intermedia (ojo, lineas en blanco, no Enter's), lo podés simplificar a esto:
LOCAL lnLineas, laLineas(1)

*-- 1) Paso el memo a líneas independientes

lnLineas = ALINES( laLineas, TuVariableMemo, 4 )

*-- 2) Vuelvo a armar el memo con las líneas individuales
TuVariableMemo = ''
FOR I = 1 TO lnLineas
  
TuVariableMemo = TuVariableMemo + laLineas(I) + CHR(13) + CHR(10)
ENDFOR




Programas ToP

unread,
Oct 22, 2013, 3:20:59 PM10/22/13
to publice...@googlegroups.com
REPLACE campo WITH SUBSTR(ALLTRIM(campo),1,LEN(ALLTRIM(campo))-1)

y lo condicionas a que la �ltima posici�n del campo memo sea una CHR(13)

Saludos cordiales

ProgramasToP S.A.S.
Barranquilla - COLOMBIA

Antes de imprimir este correo piensa en la contribuci�n que puedes hacer al medio ambiente.
Please consider your environmental responsibility and commitment before printing.

El 22/10/2013 12:40 p.m., Rodolfo Arias escribi�:

Rodolfo Arias

unread,
Oct 22, 2013, 4:35:15 PM10/22/13
to publice...@googlegroups.com

Hola voy a probar con los ejemplos dados, la situación se presenta con ciertos usuarios, que le dan varios enters al final y al concatenar datos al final del campo memo me quedan a veces grandes espacios entre el texto original del memo y lo que yo por programación agrego al final.

Saludos.

dasarobe

unread,
Oct 23, 2013, 9:24:24 AM10/23/13
to publice...@googlegroups.com
Hola
 
Yo utilizo una función donde le paso un parametro del objeto edit y hago la validación en el lostfocus:
 
LPARAMETERS toCampo
toCampo.value=rtrim(rtrim(rtrim(toCampo.value),1,chr(10)),1,chr(13))
do while right(toCampo.value,1)=" " or right(toCampo.value,1)=chr(13) or right(toCampo.value,1)=chr(10)
 toCampo.value=rtrim(rtrim(rtrim(toCampo.value),1,chr(10)),1,chr(13))
enddo
Saludos
 
Daniel

mapner

unread,
Oct 23, 2013, 9:55:27 AM10/23/13
to publice...@googlegroups.com
Ahí te va un ejemplo:
Saludos

**********

TEXT TO cTexto NOSHOW 
Hola 
que tal 
como
te va

ENDTEXT 

MESSAGEBOX( '*** CON ULTIMO ENTER ***'+REPLICATE(CHR(13),2)+cTexto+'///')
MESSAGEBOX( '*** SIN ULTIMO ENTER ***'+REPLICATE(CHR(13),2)+SinUltimoEnter(cTexto)+'///')

**********
*
FUNCTION SinUltimoEnter
LPARAMETERS cMemo
  
LOCAL i,nQLineas, aLineas[1], cRet

nQLineas = ALINES(aLineas,TRIM(cMemo))

cRet = ''

FOR i=1 TO nQLineas
IF i=nQLineas
aLineas[i] = STRTRAN(aLineas[i],CHR(13),'')
aLineas[i] = STRTRAN(aLineas[i],CHR(10),'')
ELSE
aLineas[i] = aLineas[i] + CHR(13)+CHR(10)
ENDIF
cRet = cRet + aLineas[i]
ENDFOR

RETURN cRet

******************************

El martes, 22 de octubre de 2013 15:40:44 UTC-2, Fofo escribió:
Estimados compa�eros, necesito su amable ayuda para que me den una idea
de como eliminar los enters "chr(13)" al final de un texto en un campo
memo, sin eliminar los enters entre p�rrafos, solo los del final . Por

Fidel Charny

unread,
Oct 23, 2013, 10:07:34 AM10/23/13
to publice...@googlegroups.com
Mapner:

Pretendes eliminar Chr(13) y Chr(10), pero ese trabajo ya lo hizo Alines(). Luego, si sabes que le agregas Chr(13)+Chr(10) a cada línea y quieres quitar esto del final del string, solo necesitas:
lcREt=left(lcRet,Len(lcREt)-2)
La indicación de Fernando es correcta. Si quieres eliminar todos los espacios en blanco, en Alines(), usa el flag 4 y si, además, no quieres que haya espacios a la derecha o izquierda de cada línea, usa el flag 5

mapner

unread,
Oct 23, 2013, 7:44:09 PM10/23/13
to publice...@googlegroups.com
Fidel,
Son correctas tus observaciones, lo interesante de estos ejercicios es probar diferentes enfoques, hoy no estaba muy inspirado...
Saludos
Reply all
Reply to author
Forward
0 new messages