none
Reihenfolge Initialisierung Datenmodule RRS feed

  • Frage

  • Ich habe in meinem Projekt (Steuerung einer SPS) neben Klassen- und Programmmodulen zwei Module mit Daten, die den Programmablauf steuern (Konfiguration) und Daten zwischenspeichern (Ablauf). Im Datenmodul B werden bei Initalisierung über Klassendefinitionen (New) auch Referenzen auf Datenpunkte im Datenmodul A benötigt:

    Pseudocode:

    Modul A

    friend data_a1 as ...

    friend data_a2 as ...

    End Modul A

    Modul B

    friend data_b1 as new class1(..,..,data_a1,..,..)

    friend data_b2 as new class2(..,data_a2,...)

    End Modul B

    Das ganze funktioniert gut, solange bei Initialisierung (F5) das Modul A vor dem Modul B initialisert wird - so war es bisher.

     

    Nach Änderungen in Klassendefinitionen wird jetzt zuerst Modul B initialisiert und damit sind die Referenzen auf die zu diesem Zeitpunkt noch nicht vorhandenen Datenpunkte im Modul A =Nothing und daher funktioniert nichts mehr (Reihenfolge festgestellt durch Breakpoint auf dem jeweils ersten Datenpunkt im Modul).

     

    Frage: wie kann man dem Compiler | der Laufzeit beibringen, die Datenmodule in einer von mir gewünschten Reihenfolge zu initialisieren?

     

    Mit bestem Dank im Voraus

    Montag, 1. Dezember 2008 14:36

Alle Antworten

  • nun meines wissen liest der Compiler immer von oben nach unten und springt nicht willkürlich im quellcode herum. Außerdem ist dein Modul B eindeutig von Modul A abhängig --> daraus folgt, dass immer Modul A vor B instanziert werden, wenn du nicht einen Fehler währen der Laufzeit haben möchtest. Damit Modul A nicht Nothing ist, kannst du ja global Modul A einen Wert zuweisen wie 0. Damit sollte das Progamm nicht sofort abstürzen. Wenn du deinen Fehler aber genau finden will, ohne deinen Quellcode preiszugeben, kannst du überall dort wo du dir nicht sicher bist, das er komplett richtig ist eine msgbox machen. Diese mothode ist sicher und zeigt meisten wo der fehler mit der datenweitergabe passiert
    Montag, 8. Dezember 2008 17:57