LowLevelMahn
Level-1
- Beiträge
- 766
- Reaktionspunkte
- 90
-> Hier kostenlos registrieren
ich mache mir einen Array-Datenblock DB1 of Array[1..2] of bool
und muss dann diesen blöden Behelfs-Pfad "DB1.THIS[0]" nutzen um auf DB-Elemente zuzugreifen - "DB1[0]" waere ja auch irgendwie zu logisch - wofuer das "THIS"
was sagt mir das:
In TIA ist ein Datenblock erstmal hart als Struct ausprogrammiert worden (vor laengerer Zeit) und damit hat er Struct-Semantik, also kein "[x]" direkt drann
dadurch besteht dann der Zwang zu einem benamten Root-Knoten z.B. bei normalen DBs der versteckte "Static" oder bei DB-Arrays der DB-Name als Root in der Deklarationsansicht
damit der DB-Name im Pfad nicht zweimal auftaucht (da der Root ja auch so heisst wie der DB) und weglassen wegen der Struct-Semantik nicht klappt hat man dann einfach THIS als Platzhalter verwendet
solche (trivial)Spezialtypen wie UDT-DB oder Array-DB musste man nachtraeglich dann mit solchen Mitteln in den Struct-Only-DB reindruecken (mein Beileid TIA-Entwickler) - daher kommt
bestimmt auch die Einschränkung das ein Array-DB nicht absolut sein kann
so wurde es bestimmt gemacht
class Datablock
class Array_Datablock: Datablock
class UDT_Datablock: Datablock
und in Datablock steckt die Zugriffssemantik drinn
aber leider macht man sowas nicht durch Ableitung sonder einfach mit Spezialisierung oder Aggregation
class Datablock: DatablockBase<Struct>
class Array_Datablock: DatablockBase<Array>
class UDT_Datablock: DatablockBase<UDT>
wobei in den Klassen Struct,Array und UDT dann die Zugriffssemantik implementiert ist
dann braucht man nicht solche "THIS" Kruecken - aber scheinbar ist TIA wohl stark Pseudo OOP/Prozedural entwickelt - sowas nervt echt
Es geht mir nicht um den Schreibaufwand oder das es eben so ist - sondern es zeigt ganz deutlich wie TIA intern programmiert wird - zu viel Spezialbehandlung fuer triviales == viele Fehler
und muss dann diesen blöden Behelfs-Pfad "DB1.THIS[0]" nutzen um auf DB-Elemente zuzugreifen - "DB1[0]" waere ja auch irgendwie zu logisch - wofuer das "THIS"
was sagt mir das:
In TIA ist ein Datenblock erstmal hart als Struct ausprogrammiert worden (vor laengerer Zeit) und damit hat er Struct-Semantik, also kein "[x]" direkt drann
dadurch besteht dann der Zwang zu einem benamten Root-Knoten z.B. bei normalen DBs der versteckte "Static" oder bei DB-Arrays der DB-Name als Root in der Deklarationsansicht
damit der DB-Name im Pfad nicht zweimal auftaucht (da der Root ja auch so heisst wie der DB) und weglassen wegen der Struct-Semantik nicht klappt hat man dann einfach THIS als Platzhalter verwendet
solche (trivial)Spezialtypen wie UDT-DB oder Array-DB musste man nachtraeglich dann mit solchen Mitteln in den Struct-Only-DB reindruecken (mein Beileid TIA-Entwickler) - daher kommt
bestimmt auch die Einschränkung das ein Array-DB nicht absolut sein kann
so wurde es bestimmt gemacht
class Datablock
class Array_Datablock: Datablock
class UDT_Datablock: Datablock
und in Datablock steckt die Zugriffssemantik drinn
aber leider macht man sowas nicht durch Ableitung sonder einfach mit Spezialisierung oder Aggregation
class Datablock: DatablockBase<Struct>
class Array_Datablock: DatablockBase<Array>
class UDT_Datablock: DatablockBase<UDT>
wobei in den Klassen Struct,Array und UDT dann die Zugriffssemantik implementiert ist
dann braucht man nicht solche "THIS" Kruecken - aber scheinbar ist TIA wohl stark Pseudo OOP/Prozedural entwickelt - sowas nervt echt
Es geht mir nicht um den Schreibaufwand oder das es eben so ist - sondern es zeigt ganz deutlich wie TIA intern programmiert wird - zu viel Spezialbehandlung fuer triviales == viele Fehler
Zuletzt bearbeitet: