![]() |
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 |
¿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. :D cuantas formas de "despellejar a un gato" ... |
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 |
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. |
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":D Cuantas formas diferente de hacer esto. Saludos |
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 |
Cita:
|
Claro, así está declarada para que sea compatible con TStrings, pero se construye usando TMemoStrings:
// Saludos |
Perfecto, esto me aclara algunas cosas. Gracias roman :)
|
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 |
Cita:
Saludos. |
| La franja horaria es GMT +2. Ahora son las 15:01:25. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi