im englischen Forum hat El_Choni einen schönen Code gepostet, mit dem
man die Funktionen einer Userlib detailiert auflisten kann:
Code: Alles auswählen
Structure finfo
FunName.s
Args.s
HelpLine.s
EndStructure
NewList allfunctions.finfo()
Structure Seeker
StructureUnion
b.b
w.w
l.l
EndStructureUnion
EndStructure
Procedure ShowLibInfo(LibFile$)
LibName$ = GetFilePart(LibFile$)
If ReadFile(0, LibFile$)
LibSize = Lof()
*LibHeader = AllocateMemory(LibSize)
ReadData(*LibHeader, LibSize)
CloseFile(0)
*LibEnd = *LibHeader+LibSize
*LHSeeker.Seeker = *LibHeader
If *LHSeeker\l='PURE' And PeekL(*LHSeeker+8)='LIB3' And PeekL(*LHSeeker+16)='3BIL'
*LHSeeker.Seeker = *LibHeader+20
While *LHSeeker\b<>0:*LHSeeker+1:Wend
*LHSeeker+2
If *LHSeeker>=*LibEnd:ProcedureReturn:EndIf
nDLL = *LHSeeker\b
If nDLL
For i=1 To nDLL
*LHSeeker+1
DLL$+", "+PeekS(*LHSeeker)
*LHSeeker+Len(PeekS(*LHSeeker))
Next i
DLL$ = Right(DLL$, Len(DLL$)-2)
*LHSeeker+1
EndIf
*LHSeeker+1
While *LHSeeker\b<>0:*LHSeeker+1:Wend
*LHSeeker+1
If *LHSeeker>=*LibEnd:ProcedureReturn:EndIf
nPL = *LHSeeker\b
If nPL
For i=1 To nPL
*LHSeeker+1
nPL$+", "+PeekS(*LHSeeker)
*LHSeeker+Len(PeekS(*LHSeeker))
Next i
nPL$ = Right(nPL$, Len(nPL$)-2)
EndIf
*LHSeeker+1
If *LHSeeker>=*LibEnd:ProcedureReturn:EndIf
While PeekL(*LHSeeker)<>'PURE' And PeekL(*LHSeeker+8)<>'DAT1'
AddElement(allfunctions())
allfunctions()\FunName = PeekS(*LHSeeker)
*LHSeeker+Len(allfunctions()\FunName)+1
*LHSeeker+*LHSeeker\b+5
While *LHSeeker\b=0:*LHSeeker+1:Wend
allfunctions()\Args = ""
allfunctions()\HelpLine = ""
If *LHSeeker\b='('
arging = 1
While *LHSeeker\b<>0
If *LHSeeker\b='-'
arging = 0
EndIf
If arging
allfunctions()\Args+Chr(*LHSeeker\b)
Else
allfunctions()\HelpLine+Chr(*LHSeeker\b)
EndIf
*LHSeeker+1
Wend
allfunctions()\Args = LTrim(RTrim(allfunctions()\Args))
allfunctions()\HelpLine = LTrim(RTrim(RemoveString(allfunctions()\HelpLine, "- ")))
*LHSeeker+1
EndIf
Wend
EndIf
FreeMemory(*LibHeader)
EndIf
Debug "Library: "+LibName$
Debug "PureLibraries used: "+nPL$
Debug "DLLs used: "+DLL$
ForEach allfunctions()
Debug ""
Debug "Function: "+allfunctions()\FunName
Debug "Arguments: "+allfunctions()\Args
Debug "Quick help: "+allfunctions()\HelpLine
Next
ClearList(allfunctions())
EndProcedure
Lib$ = "E:\Archivos de programa\PureBasic\PureLibraries\GadgetExtension"
ShowLibInfo(Lib$)