PDA

Ver la Versión Completa : Problemillas con el Memo...


VaMPiRu
21-11-2006, 01:55:38
Bueno, al apretar una botón quiero que se haga la misma función que el Backspace sobre un memo, es decir borrar el último caracter, hasta aquí bien.

El problema viene cuando el memo tiene un "Enter" o salto de línea. Cuando hago dicho salto de línea lo hago con:

if (Key=13) then
begin
memUsuario.Text:=memUsuario.Text+#13+#10;
end;

Añado lo del carry y el salto. Ahora no entiendo porqeúe haciendo el paso inverso no me "sale bien", me aparece un símbolo rarito en el Memo, es como si borrara el salto de línea pero el retorno de carro no.

Ésto es lo que hago al borrar:

if (memUsuario.Lines.Strings[length(memUsuario.Text)]=#13+#10) then
begin
showmessage('asd');
memUsuario.Text:=Copy(memUsuario.Text,0,length(memUsuario.Text)-2);//Si lo encuentra, pues que borre los 2 últimos
end
else
begin
memUsuario.Text:=Copy(memUsuario.Text,0,length(memUsuario.Text)-1);//Sino va borrando el último, ya me va bien así
end;

No entra al if porque el mensaje feo no me sale :(
A ver si alguien me ilumina =)

DarKraZY
21-11-2006, 10:36:39
¿Has probado la función "Trim"? Esta sirve para eliminar espacios y saltos de línea al principio o final de una cadena.

VaMPiRu
21-11-2006, 11:39:35
Ahora lo pruebo, de todas formas creo que el problema está en la comprobación del 'if' porque nisiquiera entra cuando debería entrar (es decir cuando voy a borrar un salto de línea).

seoane
21-11-2006, 11:46:07
Exactamente que quieres comprobar en este if:

if (memUsuario.Lines.Strings[length(memUsuario.Text)]=#13+#10) then

Esta mezclando la lineas con la longitud del texto completo. :confused: Lo raro es que no te de un error.

Si quieres comparar los dos últimos caracteres del texto usa algo como esto:

if (Copy(memUsuario.Text,length(memUsuario.Text)-1,2)=#13+#10) then

VaMPiRu
21-11-2006, 12:03:12
Gracias, seoane!!!!!! Ya me funciona de pu*a madre jojojo :)