![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Cita:
Por otra parte una cadena de caracteres consta, en general, de varios caracteres de manera que CaracCade no da una referencia explícita a qué carcater se está extrayendo. En todo caso PrimerCaracter me parecería más adecuado. // Saludos |
|
#2
|
||||
|
||||
|
¡Hola de nuevo!
Cita:
Cita:
. Aunque sea fácil respondernos a nosotros mismos la pregunta "¿Por qué se evalúa si S es diferente de cadena vacía?" (e importante y básico conocer la razón), no dejamos de hacérnosla mentalmente al ver ese bloque If. En cuestión de análisis de código, es más fácil lidiar con un un sólo estatuto de control (Case) que con dos juntos (If + Case).Seguimos en contacto. Al González . |
|
#3
|
||||
|
||||
|
Cita:
// Saludos |
|
#4
|
||||
|
||||
|
¡Hola a todos!
Cita:
La primera, no se simplificaría nada ya que la expresión A * B es más corta, sencilla, legible y fácil de analizar que la expresión ProduName (A, B). La segunda es que lo recordado no es cómo se hace una operación, sino qué hace una expresión o grupo de expresiones, por lo que la preguna no es ¿cómo se múltiplican dos números?, sino ¿qué hace la expresión ProduNume (A, B)?. Es más fácil respondernos qué hace la expresión A * B o qué hace la expresión Case CaracCade (S) Of, que las alternativas mencionadas. Cabe señalar, que no me refiero al qué hace internamente, sino qué significado operativo tiene en el contexto de código actual. Como habrás notado, CaracCade encapsula la validación If y la referencia al primer carácter de la cadena en una sóla expresión, y ese es el quid de este caso: utilizar una simple y única expresión en lugar de dos o más. Un abrazo. Al González . |
|
#5
|
||||
|
||||
|
Mencioné lo de las tablas de multiplicar porque son cosas que aunque en su momento nos hayan costado mucho trabajo, ahora son totalmente naturales y no nos detenemos a pensar gran cosa en ellas, simplemente efectuamos mentalmente la operación de forma automática. Así mismo sucede aquí, como en muchas (si no es que todas) áreas de la actividad humana. Hay cosas que pasan a ser tan naturales que difícilmente tenemos que detenernos a pensar en ellas, y una de éstas es saber que no se puede acceder a un elemento inexistente de un arreglo. Entiendo que para alguien que recién se esté iniciando en el mundo de la programación, puntos como éste no sean triviales, pero llega un momento en que así son, tan naturales como las tablas de multiplicar y requiere más esfuerzo mental extraer de la memoria el objetivo y uso de una función de entre los cientos de funciones que hemos usado aquí o allá en ocasiones anteriores. En el caso que planteas, además de tener que recordar el objetivo de una función, debe uno recordar el uso de sus parámetros. Insisto, un nombre como CaracCade no evoca la extracción del primer caracter de una cadena por lo que debe uno recordar que tiene un parámetro por defecto y que éste se refiere al primer caracater y no, por ejemplo, al último. Cierto, al igual que con muchas funciones incluidas con Delphi, podemos oprimir F1 o consultar la documentación para recordar el funcionamiento exacto, pero, vuelvo al punto inicial, todo esto fue ya más complicado que simplemente leer el código, no encapsulado en una función, que inmediatamente comprenderemos sin necesidad de preguntarnos nada.
No dudo que en tu biblioteca haya muchísimas funciones muy útiles, pero creo que es un exceso querer reusar absolutamente todo el código posible, incluido el más elemental. // Saludos Última edición por roman fecha: 30-04-2004 a las 00:02:49. Razón: Redacción |
|
#6
|
||||
|
||||
|
Hola,
Cita:
Saludos. Última edición por kinobi fecha: 28-04-2004 a las 18:26:47. |
|
#7
|
||||
|
||||
|
Lo digo de memoria, pero la excepción que debiera producirse es un EAccesViolation, pues se trata de acceder a una posición de memoria inválida.
hasta luego. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
#8
|
||||
|
||||
|
En efecto es un EAccessViolation. No sé por qué, pero capturar estas excepciones siempre me pone nervioso
// Saludos |
|
#9
|
||||
|
||||
|
Cita:
Cita:
PD: ¿Se dieron cuenta las vueltas que estamos dando para algo tan simple? ![]()
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
|
|
#10
|
||||
|
||||
|
Cita:
Saludos. |
|
#11
|
||||
|
||||
|
También podríamos crear una función de carcater general:
con lo que el código se reduciría a una sóla línea:
// Saludos |
|
#12
|
||||
|
||||
|
Parece que hay una nueva función para agregar a alguna biblioteca...
![]() |
|
#13
|
||||
|
||||
|
Hola,
Cita:
No estoy diciendo que el utilizar funciones externas, como la que has puesto, o a la que se refiere Al, sean una solución peor, sino que, para estos casos, el mecanismo de gestión de excepciones (para Delphi y otros lenguajes que lo implantan) ha demostrado su validez, sencillez y eficacia frente a métodos "tradicionalmente" defensivos (verificar antes que no se dan determinadas circunstancias). Saludos. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|