
Eliminar espacio en blanco, al final del texto. RichEdit
#1
Escrito 01 junio 2015 - 09:23
#2
Escrito 01 junio 2015 - 01:43
Si no importa que no sea desde un programa, podrías leerlo desde un editor de texto plano, ya que los caracteres de formato aparecerán como símbolos ASCII diferentes de números y letras, el único problema será cuando no pueda ser "mapeado" y lo muestre como blanco.
Recuerdo que una vez hice un pequeño programa que leía con BlockRead y quitaba solo los caracteres con valor 32. Obviamente lo interpretaba como un arreglo de tipo numérico.
Espero te sirve y espero haber entendido bien tu problema
Saludos
#3
Escrito 17 junio 2015 - 01:47
Muchas gracias.
El gran ecfisa (Club Delphi) nos regala la solución al problema.
Con su permiso:
procedure TrimRE(RichEdit: TRichEdit); var i: Integer; begin with RichEdit do begin if Lines.Count > 0 then begin i := Lines.Count-1; while Lines[i] = EmptyStr do begin Lines.Delete(i); Dec(i); end; SelStart := Length(Text) - Length(Trim(Lines[Lines.Count-1])); SelLength := Length(Text); SelText := ''; end; end; end;
Puede encontrarse aquí
Gracias.
#4
Escrito 17 junio 2015 - 03:56
Lo que no entiendo es porqué no basta con emplear trim. Tampoco logro entender porqué debe invocarse el seleccionado al establecer los valores a SelStart, SelLength y SelText. Me dejó pensando...
Saludos,
#5
Escrito 17 junio 2015 - 04:12
Al principio lo hice así y me quedaba todo en texto plano.
Es medio engorroso pero bueno...
Saludos.
#6
Escrito 17 junio 2015 - 04:50
No se si engorroso pero si curioso. Lo loco es que si el uso de trim es el problema, ¡en la solución lo usa de todas formas! Fijate que para calcular la posición inicial de seleccionado invoca dentro del Length() a Trim(). Vaya a saber que magia oscura hay detrás del Seleccionado vacio que aplicó como para que respetase y no se perdiera el formato.
Cosas de mandiga.
Saludos,
#7
Escrito 17 junio 2015 - 07:07
El resultado es que hay que recurrir a este tipo de código "oscuro", " injerto", hack, llamarlo como sea
Lo deseable es que la clase provea un método clear, que haga el trabajo como debe ser, porque estamos hablando de un control de edición de texto y limpiar el contenido es medio algo básico