![]() |
![]() |
| 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
|
||||
|
||||
|
¡Hola a todos!
Cita:
Entiendo que la función Copy resuelve por si sóla muchas situaciones donde necesitamos una subcadena de uno o varios caracteres. La utilizo en muchos casos. Pero, por ejemplo, resulta más práctico: Código:
Case CaracCade (Cadena) Of
'A' : Result := 10;
'B' : Result := 9;
'C' : Result := 8;
Else
Result := 0;
End;
Código:
C := Copy (Cadena, 1, 1);
Result := 0;
If C <> '' Then
Case C [1] Of
'A' : Result := 10;
'B' : Result := 9;
'C' : Result := 8;
End;
Código:
Result := 0;
If Cadena <> '' Then
Case Copy (Cadena, 1, 1) [1] Of
'A' : Result := 10;
'B' : Result := 9;
'C' : Result := 8;
End;
¡Un abrazo! Al González .Última edición por Al González fecha: 28-04-2004 a las 08:03:07. |
|
#2
|
||||
|
||||
|
Disculpa Al, pero descontando el hecho de que tu segundo bloque de código no compilará, a mi me parece bastante claro este:
que ocupa el mismo número de líneas y no hace referencia a una función que se une a las decenas de funciones incluidas con Delphi que de por sí debe uno mas o menos tener presente. Esto es importante sobre todo cuando debemos leer el código meses después de haberlo escrito. Entendámonos; yo concuerdo en el hecho de que resulta muy útil tener ciertas rutinas que nos eviten trabajar de más pero no llevándolo a sus últimas consecuencias en donde se requiere que el programador disponga de una memoria prodigiosa. // Saludos |
|
#3
|
||||
|
||||
|
Sabía que lo notarías, jeje. Bueno, supongo que sabías que sabía que lo notarías
.Con respecto a recordar el código meses después, es más fácil hacerlo si éste se encuentra simplificado en programación atómica. ¡Saludos! Al González . |
|
#4
|
||||
|
||||
|
Cita:
// Saludos pd: Estarás de acuerdo que en tu (ahora) tercer bloque el uso de Copy sale sobrando ¿no? |
|
#5
|
||||
|
||||
|
Cita:
¡Hasta pronto! Al González . |
|
#6
|
||||
|
||||
|
Para aclarar un poco más lo anterior, me será más fácil recordar qué significa este bloque de código:
Código:
Case CaracCade (S) Of
'A' : Result := 10;
'B' : Result := 9;
'C' : Result := 8;
Else
Result := 0;
End;
Código:
Result := 0;
if S <> '' then
case S[1] of
'A': Result := 10;
'B': Result := 9;
'C': Result := 8;
end;
Un abrazo. Al González . |
|
#7
|
||||
|
||||
|
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 |
|
#8
|
||||
|
||||
|
¡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 . |
|
#9
|
||||
|
||||
|
Cita:
// Saludos |
|
#10
|
||||
|
||||
|
¡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 . |
|
#11
|
||||
|
||||
|
Hola,
Cita:
Saludos. Última edición por kinobi fecha: 28-04-2004 a las 18:26:47. |
|
#12
|
||||
|
||||
|
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 |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|