Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

Zugriffsverletzung aufgetreten

OOP
2018-12-12
2018-12-18
  • OOP - 2018-12-12

    Hallo,
    ich habe gerade folgende Problem, dass ich immer wieder an einer stelle, an der ich auf ein Interface zugreife eine exception [AccessViolation] bekomme.

    Das Programm ist wie folgt aufgebaut:
    Eine Grundlegende Factory, welche Bausteininstanzen erzeugen soll.
    FactoryBase implements IFactoryBase
    Diese hat intern ein Interface, welches auf ein Basistypen zeigen soll.
    BaseInterface : IBaseFB
    Zusätzlich ist intern ein Basistyp deklariert:
    Baseinstance : BaseFB; // Dieser wird dem Interface zugewiesen.
    Zusätzlich hat die Factrory auch eine GetElement Methode, welcher als Initialisierung ein element vom Typ IBaseFB übergeben wird.

    In dieser Methode wird dann über BaseInterface.CheckInterface(Element) eine Methode das Basisbausteins BaseFB aufgerufen.
    Innerhalb dieser Methoe möchte ich dann über eine __Queryinterface abfragen, ob die Instanz, welche von außen als init übergeben wurde auch zum typ passt.
    genau an der stelle kommt die exception.

    Hat jemand eine Idee?

    Ich hoffe es war halbwegs verständlich.

     
  • OOP - 2018-12-12

    Dachte hätte was gefunden, aber war wohl nicht so

     
  • OOP - 2018-12-12

    Habe nun herausgefunden,
    Dass wenn ich die Instanz auf die das Interface zeigt schon mal irgendwie beschrieben habe,
    Dann erscheint die wxceptiob, aber warum?

     
  • OOP - 2018-12-13

    Habe es raus bekommen. sehr blöder Fehler meinerseits.
    Es wurde ein Interface auf ein Arrayelement mit index 11 gelegt, das Array war allerdings nur bis 10 deklariert.
    Leider bekam ich dann erst beim Interfaceaufruf eine exception und nicht beim zugriff auf das ungültige Element.

    Wie ist es denn möglich in einem solchen Fall das Interface auf seine Gültigkeit zu prüfen?
    (Es war ja ungleich null)

     
  • wollvieh

    wollvieh - 2018-12-18

    OOP hat geschrieben:
    Habe es raus bekommen. sehr blöder Fehler meinerseits.
    Es wurde ein Interface auf ein Arrayelement mit index 11 gelegt, das Array war allerdings nur bis 10 deklariert.
    Leider bekam ich dann erst beim Interfaceaufruf eine exception und nicht beim zugriff auf das ungültige Element.
    Wie ist es denn möglich in einem solchen Fall das Interface auf seine Gültigkeit zu prüfen?
    (Es war ja ungleich null)

    Bausteine für implizite Prüfungen hinzufügen. (Checkbounds).

     

Log in to post a comment.