31 de marzo de 2018

EditSource()

La nueva función EditSource() en VFP7 y superior es particularmente práctica en por lo menos 3 escenarios.

1) Comunicandose con otro desarrollador con respecto a un código en una localización particular de un método o PRG. Por ejemplo, al reportar un "bug" al desarrollador, en lugar de escribir algo parecido a esto al describir donde está el problema:

MODI CLASS AlgunaClase OF AlgunVCX METHOD AlgunMetodo
*-- ir a la línea 17
*-- or 
*-- ir a la línea IF VARTYPE(AlgunaVariable) = 'U'

Ud. solo puede escribir:

EditSource("AlgunVCX.VCX",17,"AlgunaClase","AlgunMetodo")

y a continuación describir el problema.

2) Escribir a un desarrollador que abra el programa, clase, o formulario en una línea específica del código.

3) Insertando referencias de EditSource() en comentarios de código, así que cualquier lectura del desarrollador, puede simplemente seleccionar el texto del EditSource() y hacer Click Derecho y ejecutar la selección desde el menú contextual.

Clases:

========================
EditSource("MyLib.VCX",0,"ClassName")

... equivalente a MODI CLASS ClassName OF MyLib

Métodos de clases:

========================
EditSource("MyLib.VCX",2,"ClassName","Init")

... equivalente a MODI CLASS ClassName OF MyLib METHOD INIT, pero con la ayuda agregada de especificar el número de la línea donde se coloca el cursor.

Métodos de clases miembros:

========================
EditSource("MyLib.VCX",2,"ClassName","Member.Init")

... equivalente a MODI CLASS ClassName OF MyLib METHOD Member.Init, pero con la ayuda agregada de especificar el número de la línea donde se coloca el cursor.

Formularios

========================
EditSource("MyForm.SCX")

... equivalente a MODI FORM MyForm

Métodos de formularios:

========================
EditSource("MyForm.SCX",6,"","Form1.Load")

... equivalente a MODI FORM MyForm METHOD LOAD, pero con la ayuda agregada de especificar el número de la línea donde se coloca el cursor.

Metodos miembros de formularios:

========================
EditSource("MyForm.SCX",13,"","Form1.Member.Init")

... equivalente a MODI FORM MyForm METHOD Member.Init, pero con la ayuda agregada de especificar el número de la línea donde se coloca el cursor.

Programas:

========================
EditSource("MyPRG.PRG")

... equivalente a MODI COMM MyPRG

Programas:

========================
EditSource("MyPRG.PRG",10)

... equivalente a MODI COMM MyPRG, pero con la ayuda agregada de especificar el número de la línea donde se coloca el cursor.

Como el número exacto de la línea puede cambiar, al llamar EditSource() desde el código de un desarrollador que cambio el código fuente por modificaciones o la inserción de comentarios, usted puede determinar programaticamente el número de la línea deseada antes de llamar EditSource(). Ud. puede usar un PRG como el ejemplo:

local laLines[1], lnLine, xx
alines(laLines,filetostr("Test.PRG"))
FOR xx = 1 to alen(laLines,1)
  IF laLines[xx] = 
    lnLine = xx
    exit
  ENDIF
ENDFOR
EditSource("Test.PRG",lnLine)

EditSource() dispara un NOWAIT implícito de modo que usted pueda tomar la acción de seguimiento en el código del desarrollador que ejecuta EditSource(). Por ejemplo, para destacar una línea específica del código, ejecute:

keyboard "{Shift+End}" 

ó

keyboard "{Shift+DnArrow}"

inmediatamente después del comando EditSource().

Copie y pegue el código siguiente en la ventana de comandos, y después lo ejecuta para ver el efecto:

text to lcString noshow
* test.prg
aa = 100
bb = 200
cc = 300
return aa + bb + cc
endtext
strtofile(lcString,"test.prg")
text to lcString noshow
* test1.prg
editsource("test.prg",3)
keyboard "{Shift+DnArrow}"
endtext
strtofile(lcString,"test1.prg")
do test1

[025] VFP Tips & Tricks - Drew Speedie

No hay comentarios. :

Publicar un comentario

Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.