Page 1 of 1

Lista de funciones de [x]harbour con sus parametros para edi

Posted: Wed Feb 11, 2015 2:37 am
by carlos vargas
Antonio, existe alguna forma de procesar los archivos de ayuda (*.txt) de harbour para extraer una lista de las funciones asi como sus parametros?
por ejemplo extraer
AAdd(<aArray>, <xValue>) -> Value
Abs(<nExpression>) -> nPositive
AChoice(<nTop>, <nLeft>, <nBottom>, <nRight>, <acMenuItems>, [<alSelectableItems> | <lSelectableItems>], [<cUserFunction>], [<nFirstItem>], [<nFirstRow>]) -> nPosition
AClone(<aArray>) -> aDuplicate
ACopy(<aSource>, <aTarget>, [<nSourceStart>], [<nCount>], [<nTargetStart>]) -> aTarget
ACos(<nRadians>) -> nArcCosine
AddASCII( <cString>, <nValue>, [<nPos>] ) -> cNewString
AddMonth( <dDate>, <nMonths> ) -> dNewDate
ADel(<aArray>, <nElement>, [<lShrink>]) -> aTarget
ADir([<cFileSpec>], [<aFilenames>], [<aSizes>], [<aDates>], [<aTimes>], [<aAttributes>]) -> nFiles
AEval(<aArray>, <bBlock>, [<nStart>], [<nCount>]) -> aArray
AFields([<aFieldsnames>], [<aTypes>], [<aWidths>], [<aDecimals>]) -> nFields
AFill(<aTarget>, <expValue>, [<nStart>], [<nCounts>]) -> aTarget
AfterAtNum( <cSearch>,<cString>, [<nCount>], [<nSkipChars>] ) -> cResult
AIns(<aTarget>, <nPosition>, [<xValue>], [<lGrow>]) -> aTarget
ALenAlloc( aArray>) -> nElements
Alert(<xMessage>, [<aOptions>], [<cColor>], [<nDelay>] ) -> nChoice
Alias([<nWorkarea>]) -> cAlias
AllTrim(<cString>) -> cTrimString
AltD([<nAction>]) -> Nil
AmPm(<cTime>) -> cFormattedTime
AnsiToHtml(<cAnsiString>) -> cHtmlString
ACos(<nRadians>) -> nArcCosine
ASin(<nRadians>) -> nArcSine
ATan(<nRadians>) -> nArcTangent
Array(<nElements> [, <nElements>,...]) -> aArray
Asc(<cExp>) -> nCode
AScan(<aTargets>, <expSearch>, [<nStart>], [<nCount>],[<lExact>], [<lASCII>]) -> nStoppedAt
ASCIISum( <cString> ) -> nASCIISum
AscPos( <cString>, [<nPos>] ) -> nASCIICode
ASin( <nRadians> ) -> nArcSine
ASize(<aTarget>, <nLength>) -> aTarget
ASizeAlloc( <aArray>, <nCount> ) -> aArray
ASort(<aTarget>, [<nStart>], [<nCount>], [<bOrder>]) -> aTarget
At(<cSearch>, <cString>, [<nStart>], [<nEnd>] ) -> nPos
AtAdjust(<cSearch>, <cString>, <nEndPos>, [<nCount>], [<nSkipChars>], [<xInsChar>]) -> cJustified
ATail(<aArray>) -> Element
ATan(<nRadians>) -> nArcTangent
ATn2(<nSine>, <nCosine>) -> nRadians
AtNum(<cSearch>,<cString>, [<nCount>], [<nSkipChars>]) -> nPos
AtRepl(<cSearch>, <cString>, <cReplace>, [<nCount>], [<lOneOnly>] ) --> cResult
AtSkipStrings(<cSearch>, <cString>) -> nPos
AtToken(<cString>, [<cDelimiter>], [<nCount>]) --> nPos

esto por que por ejemplo en xmate, el editor muestra cuando escribimos el nombre de una función y la misma esta en un archivo llamado sintaxis.lst
la información de los parámetros de la función, y en la media los escribimos uno a uno los parámetros, muestra en negrilla el parámetro actual.
el archivo que acompaña a xmate, esta desfasado en cuanto a que faltam muchisimas funciones, y las que estan el numero de parametros en algunos casos ha aumentado.
lo estoy agregando y modificando a mano pero es mucho trabajo. :-(

como dicen, una imagen vale mil palabras

Image
Image

ademas, es muy probable que tanto en fiveedit sea necesario algo de esto.

Re: Lista de funciones de [x]harbour con sus parametros para edi

Posted: Wed Feb 11, 2015 5:53 am
by Antonio Linares
Carlos,

No se si todas las funciones de Harbour están explicadas en los archivos TXT, pero suponiendo que lo esten:

La descripción de cada función siempre esta entre $SYNTAX$ y $ARGUMENTS$

Luego se trata de hacer una función que recorrar recursivamente todos los directorios en busca de ficheros TXT
y que luego usando At() localice la posición de esos dos tokens y lo que hay en medio es lo que buscamos.

Yo hace poco publiqué aqui en los foros como usar la recursividad para rellenar un tree con todos los subdirectorios
y los ficheros. Modificando el codigo de esa función y usando esto explicado aqui, lo tendriamos :-)

Re: Lista de funciones de [x]harbour con sus parametros para edi

Posted: Wed Feb 11, 2015 2:03 pm
by carlos vargas
okis, es lo que necesito, haremos unas pruebas y t comento como me fue.
:-)

salu2