PDA

Ver la Versión Completa : Copiar/Pegar grandes cantidades de texto


pmarin
13-12-2006, 21:09:21
Hola,

tengo una aplicacion con unTRichEdit. El campo PlainText := True.
Todo parece funcionar bien. Puedo Copiar desde otras aplicaciones y
Pegar en el Editor. Puedo abrir ficheros enormes de Texto (he probado y
he abierto uno de 15 Megabytes).

Sin embargo falla en lo siguiente:

- Abro con el Notepad un fichero de texto de 12 Megabytes.
- Selecciono todo el contenido con SelectAll.
- Hago Copiar al Portapapeles ( tambien con Ctrl+C)
- Intento Pegar al Editor ( tambien con Ctrl+V ) pero no
ocurre absolutamente nada.
No funciona ni tampoco aparece ningun tipo de mensaje.

Sin embargo, si que me he dado cuenta que la cantidad maxima
de texto que puedo pegar es de 64 KBytes.

¿Alguien tiene alguna idea de porque no funciona?

Gracias

pmarin
14-12-2006, 15:22:18
Ya esta. Ya he encontrado la solucion a este problema.

Por defecto, el texto de un TRichEdit esta limitado a 64 KB.
La ayuda del Delphi indica que lo anterior esta controlado por
la propiedad MaxLength. En la ayuda nos indica que si este valor
es 0 no existe limite definido en la aplicacion en la longitud del texto.

Sin embargo, tambien hay una nota adicional que dice que, incluso con
el valor de 0, puede haber una limitacion en el numero de caracteres
impuesto por el Sistema Operativo.
En el caso del Windows XP este limite es de 64KB.

Estableciendo Maxlength a $7FFFFFF0 permite que tengamos
aproximadamente 2GB de texto.

Yo lo he limitado a 24 Megabytes ($1800000), que ya esta bien.
Esto lo hago dentro del Evento OnCreate.
RichEdit1.MaxLength := $1800000;

Saludos

Nota: ¿Por que podia abrir ficheros enormes y no hacer Copiar/Pegar?
La respuesta esta en que cuando abria el fichero accedo directamente
a la propiedad Lines, la cual es una TStrings y crece dinamicamente.

dec
14-12-2006, 22:59:40
Hola,

Gracias por dejar por aquí la solución al problema. Probablemente haya alguien que pueda aprovecharla. :)