Page 1 of 1

No utilicen literales en los comandos

PostPosted: Tue Jan 27, 2015 11:47 am
by hmpaquito
Suponiendo la siguiente definicion de Folder
Code: Select all  Expand view

@ 10, 10 FOLDER oFolder ;
              PROMPTS "tab1", "tab2"


En caso de que en determinada condicion quiera añadir tab3 habra de hacerse asi:
Code: Select all  Expand view

IF lCondicionParaTab3
   @ 10, 10 FOLDER oFolder ;
                 PROMPTS "tab1", "tab2", "tab3"
ELSE
   @ 10, 10 FOLDER oFolder ;
                 PROMPTS "tab1", "tab2"
ENDIF


Con lo facil que habria sido poner en la definicion del comando que lo que se pasa es un array y NO una lista de literales separados por comas... si ya se que es molesto poner { y } pero luego las posibilidades son INMENSAS.
Code: Select all  Expand view
aPrompts:= {"tab1", "tab2"}
IF lCondicionParaTab3
   Aadd(aPrompts, "tab3")
ENDIF

@ 10, 10 FOLDER oFolder ;
              PROMPTS aPrompts
 



Y sÍ ya sé que se puede usar la TFolder() directamente...



Y ya metidos en harina de comandos mal diseñados
Supongamos:

Code: Select all  Expand view
ACTIVATE WINDOW CENTER MAXIMIZED


¿ Qué pasa si la ventana será centrada a veces si o a veces no ? ¿ O maximizada si o maximizada no ?

Con lo facil que habria sido poner:
Code: Select all  Expand view
ACTIVATE WINDOW ;
                CENTER lConCenter ;
                MAXIMIZED lConMaximized


Por no hacerlo asi... cuando se juntan un par de condiciones los comandos se hacen INSERVIBLES: hay que usar directamente las clases.

Saludos.

Re: No utilicen literales en los comandos

PostPosted: Wed Jan 28, 2015 6:16 am
by Antonio Linares
Paco,

Todo tiene sus ventajas y sus inconvenientes...

Si cuando escribí el primer FiveWin hubiera sabido todo lo que se ahora...

Pero tocó hacerlo con lo que sabía en ese momento :-)

Los "hubiera" son una ilusión. Lo que pasó era justo lo que tenía que pasar y no podía pasar de otra forma :-)

Re: No utilicen literales en los comandos

PostPosted: Wed Jan 28, 2015 8:23 am
by hmpaquito
Antonio,


Tienes razón en que todo tiene sus ventajas/ inconvenientes... pero creo que en este caso las desventajas son obvias y las ventajas también.

Y sí tienes razón en que no podemos juzgar el pasado lejano según los nuevos puntos de vista... sobre todo cuando es un trabajo que se va realizando públicamente y son muchos los que aprueban por acción u omisión que sea así como son las cosas (comandos).

Mi post va en el sentido de PRIMERO, advertir sobre lo que ocurre... no conozco ningun comentario publico al respecto y veo habitualmente el foro y por tanto había que decirlo y SEGUNDO, que se tenga en cuenta estas problematicas bien para nuevos comandos, bien para simplemente cuando se añadan nuevas funcionalidades (extensiones) a los comandos existentes.

Saludos cordiales.

PD. Hay situaciones como el caso de los FOLDER donde el problema se agranda puesto que el folder tiene que recibir los aPrompts... en el :New()... No he probado el :SetPrompts() y prefiero no tener que usarlo.