en clipper existia la posibilidad de generar comandos
#xcommand OPEN FILE <(Fichero)> ; [TIME <tiempo>] ; [<ex: EXCLUSIVE>] ; [<sh: SHARED>] ; [EVAL <bBlock>] ; [<area: CURRENT>] ; [INDEX <(indice1)> [, <(indiceN)>]] ; [ON ERROR <bError>] ; ; => IF CsOpenDbf( ;<(Fichero)> , ; if(<.sh.> .or. <.ex.>, !<.ex.>, NIL) , ;<tiempo> , ; !<.area.> , ;<{bBlock}> , ; ) ; [; dbSetIndex( <(indice1)> )] ; [; dbSetIndex( <(indiceN)> )] ;; ELSE ;; IF <.bError.> ;; Eval( <{bError}> ) ;; END ;; END
esta era la sintaxis para crear el comando OPEN FILE fichero lo que esta entre parentesis rectos es opcional, EXCLUSIVE y SHARED son bool, ...
si ponias TIME a continuación ponias el tiempo, pero como es opcional puedes no ponerlo.
no era necesario escribir todos los parámetros como en el caso de los métodos.
se podia no respetar el orden de los parametros, esto permitia que el comando fuera "conversacional"
en c# existe algo parecido a esto ? podemos crear nuestros comandos ?
aqui pongo otros ejemplos
#command SET DATE [TO] AMERICAN => _DFSET( "mm/dd/yyyy", "mm/dd/yy" ) #command SET DATE [TO] ANSI => _DFSET( "yyyy.mm.dd", "yy.mm.dd" ) #command SET DATE [TO] BRITISH => _DFSET( "dd/mm/yyyy", "dd/mm/yy" ) #command SET DATE [TO] FRENCH => _DFSET( "dd/mm/yyyy", "dd/mm/yy" ) #command SET DATE [TO] GERMAN => _DFSET( "dd.mm.yyyy", "dd.mm.yy" ) #command SET DATE [TO] ITALIAN => _DFSET( "dd-mm-yyyy", "dd-mm-yy" ) #command SET DATE [TO] JAPANESE => _DFSET( "yyyy/mm/dd", "yy/mm/dd" ) #command SET DATE [TO] USA => _DFSET( "mm-dd-yyyy", "mm-dd-yy" )
Hugo González (Macgyber)