ich bin auf die Schnappsidee gekommen, mir per Macros ein "AlignedStructure/EndAlignedStructure" zu bauen, so dass die Struktur immer am Ende mit Blindbytes aufgefüllt wird, bis das ganze eben "aligned" ist (prozessorabhängiges oder manuelles Alignment).
Sinn und Zweck: Komplexe Strukturen können einfach "hirnlos" erweitert werden und das Alignment stimmt immer.
Problem: Ich habe natürlich nicht daran gedacht, dass ich so den Autovervollständiger aushebel, was bei komplexen Strukturen natürlich ungeschickt ist...
Hat jemand vielleicht eine Ansatzidee für eine bessere Lösung oder einen Trick auf Lager betreffs Autovervollständigung?
Code: Alles auswählen
Macro __AlignedStructureDQ
"
EndMacro
Macro AlignedStructure(_StructureName_, _AlignmentValue_=SizeOf(Integer))
CompilerIf Defined(_StructureName_, #PB_Structure)
CompilerError "'Structure/AlignedStructure' already declared: "+__AlignedStructureDQ#_StructureName_#__AlignedStructureDQ
CompilerEndIf
CompilerIf _AlignmentValue_ <= 0
CompilerError "'AlignmentValue' has to be greater than zero: "+__AlignedStructureDQ#_AlignmentValue_#__AlignedStructureDQ
CompilerEndIf
#__StructureAlignment_#_StructureName_ = _AlignmentValue_
Structure __AlignedStructureDummy_#_StructureName_
EndMacro
Macro EndAlignedStructure(_StructureName_)
EndStructure
Structure _StructureName_ Extends __AlignedStructureDummy_#_StructureName_
CompilerIf SizeOf(__AlignedStructureDummy_#_StructureName_) % #__StructureAlignment_#_StructureName_
zzzzStructureAlignment.b[ #__StructureAlignment_#_StructureName_ - SizeOf(__AlignedStructureDummy_#_StructureName_) % #__StructureAlignment_#_StructureName_ ]
CompilerEndIf
EndStructure
EndMacro