FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Funciones sobre String
Hola, buenas, soy nuevo y ya me leí la Guía de estilo.
Mi duda es si en Delphi 7 existe alguna función que dada una cadena tipo "hola" te devuelva los X caracteres de la izquierda o de la derecha. Por ejemplo: Derecha(hola,2) devolvería "la", ¿existe? y si no ¿como lo podría hacer? Gracias |
#2
|
||||
|
||||
Hola. Bienvenido, y bien por leerte la guía
Puedes utilizar la función Copy. Cita:
Combinada con la función Length. Algo así:
Nota: la función "Izquierda" la puedes sustituir por la misma función Copy. Salu2 |
#3
|
||||
|
||||
Lamento darte una mala noticia ixMike, acabas de reinventar la rueda. Existe la función LeftStr y RightStr, ambas declaras en la unit StrUtils.
Al menos desde la versión 6 están disponibles, desconozco si están en la 4 o 3, pero en la 7 seguro. Saludos, |
#4
|
||||
|
||||
No sería la primera vez . De hecho, hasta pensé en poner un post acerca de ello.
...¡ni se te ocurra robarme la idea, ¿eh?! |
#5
|
||||
|
||||
Cita:
No te preocupes, no eres el único que sufre de eso... yo lo vivo casi a diario. Saludos, |
#6
|
||||
|
||||
¿Sufrir? ¡A mí me encanta! Por dos motivos:
-Demuestra originalidad, y capacidad para desarrollar un algoritmo. -Me gusta "ahorrar" en uses Ah!, y esto demuestra otra cosa: hilo desvirtuado (a partir de ahora, "h.d." ó "+1" después del saludo) Salu2. [h.d.] (+1) |
#7
|
|||
|
|||
Muchas gracias por cotnestar, he probado las funciones "LeftStr" y "RightStr" lugo pruebo la de Copy que ahora no tengo mucho tiempo.
Yo en un principio había pensado en algo así, pero ahora me doy cuenta que está mal jejeun bucle for, (para la funcion derecha un bucle for normal de 1 hasta la lonitud y para la funcion izquierda un bucle for que vaya desde la longitud de la cadena hasta la primera posición) pero me estoy dando cuenta que no funcionaría Gracias |
#8
|
||||
|
||||
Cita:
De hecho, tanto LefrStr como RightStr usan a Copy para devolver el resultado. Es más, la declaración de ixMike es una copia de dichas funciones. ¿Para que usar Copy si ya se cuenta con la función adecuada? (*) Funciona, no hay que hacer pruebas, realmente funciona. (*) A menos claro, que quieras evitarse el uso de la unidad StrUtils. Saludos, |
#9
|
||||
|
||||
Para mí es un buen motivo
|
#10
|
||||
|
||||
¡Jo'er! Si evitar escribir el nombre de una unidad es motivo para no usar sus funciones, de ahora en adelante no me ducharé para evitar el esfuerzo de abrir la llave del agua.
|
#11
|
||||
|
||||
No es por esfuerzo, amigo Al, es por el tamaño resultante del ejecutable
|
#12
|
||||
|
||||
Vamos! ¿Que tanto puede aumentar el añadir una unit? Es cierto que se deben eliminar las units que no se usan... pero por una unit no hay lio.
Saludos, PD: Por cierto, muy buena frase Al, me recuerda que tengo que dar vuelta el calzoncillo PD: Hilo desvirtuado. +1 |
#13
|
||||
|
||||
¡Nada! aquí a ahorrar hasta el último byte!!! ¿Cómo, que el contador va de 1 a 100 y utilizas integer?!!! ¡¡¡si tienes el tipo byteeeeeee!
[h.d. +1] |
#14
|
||||
|
||||
De hecho, en cualquier procesador de 32 bits es más eficiente un contador Integer que Byte. A no ser que se trate de una aplicación cuyo uso de memoria sea un factor ultra súper crítico, dudo mucho que valga la pena "ahorrar" tres bytes a cambio de darle más trabajo al procesador, además de volver más lento el código.
En cuanto a lo del tamaño del programa, haz una prueba y dinos cuántos bytes adicionales toma el ejecutable al usar LeftStr en lugar de Copy. En muchos casos la diferencia es 0 (sobre todo si se trata de una aplicación que incluye formularios). Cabe recordar que el compilador NO incluye todas las funciones de una unidad referida a través de un Uses, sólo las que el programa utilice (algo que hace todo buen compilador, Delphi no es Cuic Basic ). Un abrazo. Al. |
#15
|
||||
|
||||
Desconocía el dato acerca de byte-integer, pero tengo comprobado que mi Delphi 3 genera ejecutables del mismo tamaño (variación en pocos bytes) si utilizo sólo IntToStr y StrToInt de SysUtils, que si utilizo muchas funciones más. Ahora, si la quito, me ahorro 50KBs. Es más, la pongo, sin usar nada de ella, y al quitarla, ¡me ahorro 50KBs!
Por supuesto, no estoy hablando de aplicaciones con formularios (si ahí me pudiera ahorrar Graphics ) |
#16
|
||||
|
||||
Cita:
Debe considerarse que siempre será compilado el código de inicialización que tengan todas las unidades referidas a través de cláusulas Uses. Saludos. Al. |
#17
|
||||
|
||||
Cita:
Si tengo un vago recuerdo de que mientras tengamos units en el uses el compilador las "explora"... ¿a eso te refieres cuando dices esto?: Cita:
¿Esto es así? Saludos, |
#18
|
||||
|
||||
Cita:
Cita:
Al decir que "siempre será compilado el código de inicialización que tengan todas las unidades referidas a través de cláusulas Uses", no me refiero al análisis y validación sintácticos que hace el compilador sobre el código fuente, sino a la "integración" de dicho código en su versión ejecutable dentro del programa resultante. Cuando la unidad .pas no ha sido modificada desde su última compilación, el código se tomará directamente del archivo .dcu correspondiente. De hecho el compilador no necesita los .pas para generar un .exe, mientras existan las unidades compiladas .dcu. Es de éstas de dónde siempre toma lo necesario para crear el programa ejecutable. Espero no haber confundido más. Saludos. Al. Última edición por Al González fecha: 03-03-2008 a las 05:39:31. |
#19
|
||||
|
||||
Todo lo contrario amigo. Traes Luz a este tonto (yo) para que sepa por donde mirar.
Saludos, |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
funciones string | gallipi | Varios | 3 | 29-01-2008 17:26:29 |
Funciones String | thomasini | OOP | 3 | 27-09-2006 14:53:45 |
Problemas con funciones de manejo de string | destrukthor | Varios | 7 | 11-07-2006 16:39:29 |
Información sobre funciones string | JavierO | Varios | 2 | 11-10-2005 19:34:02 |
Funciones de String | Joacko | Varios | 0 | 01-12-2004 19:54:49 |
|