![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#21
|
||||
|
||||
A ver, si lo que se quiere es descontar los saltos de línea y sabemos que hay dos caracteres por cada salto, ¿no es más facil tomar la longitud del texto y restarle 2 veces el número de líneas?
// Saludos |
#22
|
||||
|
||||
¿y por que no?
En los códigos anteriores estamos usando la propiedad Text, que no existe como tal, si no que se crea juntando todas las lineas en un solo string, con la consecuente perdida de tiempo en ese bucle. Así que es mejor acceder directamente a cada linea y sumar sus longitudes, así también eliminamos los saltos de linea y evitamos andar moviendo los caracteres de un string a otro antes de contarlos. ![]() |
#23
|
||||
|
||||
La propiedad Text se obtiene mandando el mensaje WM_GETTEXT. La verdad es que hubiera jurado que era como tú decías pero revisando el código de la VCL se ve eso.
// Saludos |
#24
|
||||
|
||||
Cita:
Ahora bien, puede que tu estés hablando de Memo1.Text y no de Memo1.Lines.Text. En el primer caso si que se obtiene con WM_GETTEXT, no así en el segundo caso, como se puede ver en el código anterior. |
#25
|
|||
|
|||
Gracias Roman
Tu código también esta de 10. YA lo probe y esta perfecto, bien dices seoane, hay muchas fformas de "despellejar a un gato" ![]() Cuantas formas diferente de hacer esto. Saludos
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
#26
|
||||
|
||||
En Delphi 7 es igual, sólo que tú estás hablando de TStrings.Text, pero la propiedad Lines del TMemo es de tipo TMemoStrings que redefine GetTextStr
y es Memo.Text la que se obtiene usando WM_GETTEXT. // Saludos |
#28
|
||||
|
||||
Claro, así está declarada para que sea compatible con TStrings, pero se construye usando TMemoStrings:
// Saludos |
#29
|
||||
|
||||
Perfecto, esto me aclara algunas cosas. Gracias roman
![]() |
#30
|
||||
|
||||
De hecho, por eso hubiera jurado que era como tú decías. Siendo TStrings una clase independiente de cualquier control, pues no hay forma de obtener el texto total como no sea concatenando de una u otra forma cada línea. Pero esa es la maravilla de TStrings, una clase base sumamente versátil pero perfectamente adecuada para muchos descendientes. Creo que muchos controles hacen los mismo: combos, listbox, etc.
Ahora, si- como sería más lógico -se decide descartar también los espacios en el conteo como comenta Caral, no cabe duda que tú código y el de ArdiIIa en ensamblador son lo óptimo. // Saludos |
#31
|
|||
|
|||
Cita:
![]() Saludos.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Contar Dtos en un SQl | IVAND | SQL | 7 | 03-08-2006 23:25:35 |
contar caracteres | Cosgaya | Varios | 1 | 04-06-2005 17:40:54 |
Contar Dias | Paradiso | Varios | 2 | 27-06-2004 11:35:30 |
Contar Caracteres | Nuria | Varios | 2 | 29-12-2003 10:36:46 |
Problema con contar | kao | SQL | 3 | 07-07-2003 10:47:14 |
![]() |
|