GetStructures
Verfasst: 06.05.2012 22:19
Da war im engl. Forum eine Nachfrage, da hab ich diese kleine Routine schnell gestrickt
Es werden Mithilfe des CompilerInterfaces alle Structuren und Members ausgelesen.
Anwendungsfall: Vielleicht ne IDE, aber ansonsten weiß ich auch nicht
Das ganze funktioniert nur im ASCII-Mode!

Es werden Mithilfe des CompilerInterfaces alle Structuren und Members ausgelesen.
Anwendungsfall: Vielleicht ne IDE, aber ansonsten weiß ich auch nicht

Code: Alles auswählen
EnableExplicit
Structure strucMember
Name.s
List Members.s()
EndStructure
Structure strucName
List Name.strucMember()
EndStructure
Procedure GetStructures(*p.strucName)
Protected.i Compiler = RunProgram(#PB_Compiler_Home + "Compilers\pbcompiler", "/STANDBY", "", #PB_Program_Open | #PB_Program_Read | #PB_Program_Write | #PB_Program_Hide)
Protected.s tmp, Text
If Compiler
If IsProgram(Compiler)
Repeat
tmp = ReadProgramString(compiler)
Until tmp = "READY"
WriteProgramStringN(Compiler, "STRUCTURELIST")
Repeat
Text = ReadProgramString(Compiler)
If Text <> "OUTPUT" + #TAB$ + "COMPLETE"
AddElement(*p\Name())
*p\Name()\Name = Text
EndIf
Until Text = "OUTPUT" + #TAB$ + "COMPLETE"
FirstElement(*p\Name())
DeleteElement(*p\Name())
ForEach *p\Name()
WriteProgramStringN(Compiler, "STRUCTURE" + #TAB$ + *p\Name()\Name)
Repeat
Text = ReadProgramString(Compiler)
If Text <> "OUTPUT" + #TAB$ + "COMPLETE"
AddElement(*p\Name()\Members())
*p\Name()\Members() = Text
EndIf
Until Text = "OUTPUT" + #TAB$ + "COMPLETE"
Next
WriteProgramStringN(Compiler, "END")
CloseProgram(Compiler)
EndIf
EndIf
EndProcedure
Define.strucName structs
GetStructures(@structs)
With structs
ForEach \Name()
Debug "Structure " + \Name()\Name
ForEach \Name()\Members()
Debug " " + \Name()\Members()
Next
Debug "EndStructure"
Debug ""
Next
EndWith