wonderfulworld
Level-1
- Beiträge
- 114
- Reaktionspunkte
- 10
(1) kann ich bestätigen, und (2) wird wohl auch so sein, weil die Ursache gleich ist. Variablen und Ergebnisse von Eigenschaften und Methoden sind temporär, wie soll man die bei laufendem Programm anzeigen? So schön ist die neue OOP-Welt eben doch nicht, ich selbst entwickle mich da auch ein wenig vom Paulus zum Saulus zurück. Kapselung gibt es mit dem FB schon in CoSeSys2, so dass bei V3 eigentlich nur die Vererbung und die damit verbundene erweiterte Datentypkompatiblität als nützliche Neuerungen bleiben.
Das Flow Controll ist einfach nur genial. Genau das hab ich mir gewünscht, aber nicht gefunden(1) Warum gibt es keine "Haltepunkte" zum Debuggen, die das Programm nicht anhalten, aber den Zustand an dem der "Haltepunkt" gesetzt wurde anzeigen?
Man kann die Werte in Methoden aber durchaus darstellen, das Feature nennt sich Flow Control (im Menü Debug). Dann werden im laufenden Betrieb auch in Methoden die Werte ausgelesen.
Im Prinzip passiert genau das: es werden Haltepunkte in der Methode gesetzt, die Werte an der Stelle ausgelesen und die Bearbeitung fortgesetzt.
Dabei muss man beachten, dass diese Funktionalität die Laufzeit beeinflusst.
Was meinst du mit "ich kann Eigenschaften nicht debuggen". Du meinst die Werte werden im Watchfenster nicht dargestellt?
Auch das geht, aber man muss es der Eigenschaft beibringen, dazu gibt es zwei Attribute:
{attribute 'monitoring' := 'call'}
bzw.
{attribute 'monitoring' := 'variable'}
Details dazu findest du in der Online Hilfe.
standardmässig wird das nicht gemacht, weil die Eigenschaften im ersten Fall wirklich aufgerufen werden, und wenn die Eigenschaft irgendeinen Seiteneffekt auf das Objekt
hat, dann könnte es passieren dass das Objekt durch betrachten im Watch-Fenster verändert wird.
Der zweite Fall hat den Nachteil, dass man nur den Wert des letzten Aufrufs bekommt, der könnte unter Umständen anders sein, als der Wert des nächsten Aufrufs.
Du hast ja die zwei anderen Fragen sehr gut beantwortet. Bei der dritten, wird das glaub ich ein bisschen schwieriger. Die ist aber für mich auch nicht so wichtig wie die anderen beiden.(3) Warum muss ich für jede Methode ein neues Objekt anlegen?
Da verstehe ich ehrlich gesagt die Frage nicht.
Doch, NULL gibt es, wenn auch syntaktisch nur als 0. Wenn du Interfaces verwendest, dann hat die Variable initial den Wert 0 bis man der VariableEine Frage hätte ich noch zu Eigenschaften. Und zwar habe ich mal ein bisschen mit den Eigenschaften rumgespielt und in einem FB eine Eigenschaft "myProperty" von Datentyp "ImyInterface" erzeugt. Dann hab ich diesen FB in einem Programm aufgerufen, dass ganze kompeliert und dann bin ich im Simulationsmodus Online gegangen. Das alles ging. Was ich jetzt nicht verstehe ist, auf welches Objekt "myProperty" verweißt. In Java würde es jetzt auf NULL zeigen. Aber NULL darf es doch in CoDeSys garnicht geben?
Du hast ja die zwei anderen Fragen sehr gut beantwortet. Bei der dritten, wird das glaub ich ein bisschen schwieriger. Die ist aber für mich auch nicht so wichtig wie die anderen beiden.
Wenn ich in einer Hochsprache (Java, C++) eine Klasse/Interface anlegen möchte, öffne ich eine Textdatei (ich brauche dazu nicht mal eine IDE) und kann meine Methodendefinitionen eine nach der anderen herunterschreiben. Das geht sehr schnell und am Ende habe ich alle Methoden einer Klasse schön übersichtlich in einer Text-Datei. Ich sehe nicht nur ihren Name auf einen Blick, sondern auch ihre Parameter, Rückgabewerte und die in der Methode enthaltene Logik. Wenn ich in CoDeSys eine Methode anlegen möchte dauert das deutlich länger. Ich muss zuerst ein Methoden-Objekt mit Hilfe von einem Wizard erzeugen und einen Rückgabewert + gewünschte Sprache auswählen. Dann bekomme ich für jede Methode eine eigene Datei, die im Editor geöffnet werden muss. Dort kann ich dann anfangen zu Programmieren. Beim Debuggen ist es genauso. Will ich wissen was in der Methode passiert muss ich sie öffnen. Wenn ich mehrere Methoden gleichzeitig beobachten möchte, dann muss ich einen großen Bildschirm haben, der die vielen geöffnetne Fenster anzeigt. Wenn die Methoden alle in einem Objekt wären, könnte man scrollen und sich die verschiedenen Methoden schnell anschauen.
Also nochmal ein großes Entschuldigung für meine vorschnellen Aussagen und vielen Dank für deine Antworten.
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?