Árvore de páginas

Los bloques de código pueden aplicarse a diversas situaciones, desde fórmulas, hasta procesamientos complejos.

 

En la mayor parte de los casos no es recomendable la utilización del bloque de código, porque dificulta la comprensión de la tarea que se desea realizar.

 

La excepción aplicada está en la utilización del bloque de código como una función de callback, es decir, un grupo de comandos que se llamarán dentro de otra función.

 

La biblioteca de funciones y componentes gráficos del ADVPL presenta correctamente dónde son eficaces los bloques de códigos, como por ejemplo en las funciones:

 

  • AEval();
  • DbEval();
  • Sort();
  • AScan();
  • Propiedades de callback de componentes gráficos:
    • bClicked
    • bAction

 

Esta técnica de programación también se conoce por el nombre "Inversión de dependencia", es decir, la función o método que recibe el bloque de código prepara o controla la ejecución en el momento exacto del bloque de código, dejando la responsabilidad de lo que hay que hacer para el bloque de código.

 


Ejemplo:


 // CodeBlockExamples.prw
#INCLUDE "TOTVS.CH"
Function CodeBlockExamples()
Local aUnsortedArray := { 1, 5, 3, 7, 8, 9, 2, 4, 6, 10 }
Local aTags := { "TAGA", "TAGB", "TAGC" }
Local aDescSortedArray := {}
Local cOut := ""
Local nCount := 0
aDescSortedArray := ASort(aUnsortedArray, , , {|x,y| x > y })
For nCount := 1 To Len(aDescSortedArray)
cOut += CValToChar(aDescSortedArray[nCount]) + " "
Next
ConOut("Array en orden decreciente: " + cOut)
nPos := AScan(aTags, {|x| x == "TAGA"})
If nPos > 0
ConOut("Found TAGA")
EndIf
Return

  • Sem rótulos