TIA Bytelänge von Struct Variable ermitteln

sargan26

Level-2
Beiträge
102
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich würde gerne herausfinden wie viel Motoren in meiner Struct "Motoren" sind. Zwei mögliche Herangehensweisen habe ich gefunden:

1. "Serialize" in ein Array das groß genug ist -> das frisst aber viel Speicher und Zykluszeit

2. Statt Struct ein Array vom Type "typeMotor" allerdings steht dann überall Motoren[1], Motoren[2] statt aussagekräftigen Namen Staumotor, Ventilator... das möchte ich auch nicht.



test_serialisieren.png
 
Zuletzt bearbeitet:
2. Statt Struct ein Array vom Type "typeMotor" allerdings steht dann überall Motoren[1], Motoren[2] statt aussagekräftigen Namen Staumotor, Ventilator... das möchte ich auch nicht.
Zum Einen können die Array-Member mittlerweile unterschiedliche Kommentare bekommen, um die Verwendung entsprechend zu kennzeichnen.
Und zum Anderen kannst Du im Programmcode mit Konstanten arbeiten, so dass z.B. statt Motor[1] -> Motor["Stau"], Motor[2] -> Motor["Ventilator"] ... dann dort ebenfalls aussagekräftige Namen stehen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Spontan Idee:
Du rundest deine Struct auf ein Byte auf (also 5 Reserve Bits).
Macht einen DB nur für diese Variablen.
Holst dir mit L DBLG die Länge des DBs. (AWL)
Nicht besonders elegant, aber müsste funktionieren...

"countOfElements" wäre ein anderer Ansatz. Funktioniert aber wohl nur mit Array. Aber vielleicht gibt es da noch Tricks...

Ein Array of DT würde die Sache natürlich vereinfachen. Das man inzwischen den einzelnen Array Elementen Kommentare geben kann, weißt Du?
Da geht dann Staumotor, Ventilator, ... Ist vielleicht ein Kompromiss.
 
2. Statt Struct ein Array vom Type "typeMotor" allerdings steht dann überall Motoren[1], Motoren[2] statt aussagekräftigen Namen Staumotor, Ventilator... das möchte ich auch nicht.
Zum Einen können die Array-Member mittlerweile unterschiedliche Kommentare bekommen, um die Verwendung entsprechend zu kennzeichnen.
Und zum Anderen kannst Du im Programmcode mit Konstanten arbeiten, so dass z.B. statt Motor[1] -> Motor["Stau"], Motor[2] -> Motor["Ventilator"] ... dann dort ebenfalls aussagekräftige Namen stehen.
Ich mach' bei sowas dann auch die Deklarierung des Arrays schon mit globalen Konstanten:
Code:
Motor : Array[0.."ANZAHL_MOTOREN"] of "typeMotor";              // Motordaten
Dann kann man für Schleifen und Ähnliches auch direkt auf diese Konstante zurückgreifen und braucht bei späteren Erweiterungen nur an einer Stelle zu suchen/ändern.
 
Zurück
Oben