Variablen machen sich selbststaendig!



  • Hallo C++ Gemeinde!

    Ich habe ein Problem...und zwar machen sich meine Variablen in meinem Programm selbststaendig?!?! Sehr, sehr merkwuerdig!

    Eigentlich ist recht simpel! Ich rufe aus einer (Dialog-) Klasse eine Funktion einer anderen (Dialog-)Klasse auf

    Hauptdialog:

    ...
    if(test == 1){
    m_EventWindow.sorting();
    }
    else
    ...
    

    Im CEventWindow geht's dann so weiter:

    void CEventWindow::sorting()
    {
    for(int i=0:i<3;i++){
      importantCallHelps[i] = 0;
      importantError[i] = 0;
      importantWarning[i] = 0;
    }//initialisierung
    
    for(i=0;i<63:i++){
      if(TestItem[i].Eventtyp == "Callhelp") && (TestItem[i] ==1){
        if(TestItem[i].Machineno < importantCallHelps[0] || (importantCallHelps[0]==0){
          importantCallHelps[2]=importantCallHelps[1]
          importantCallHelps[1]=importantCallHelps[0]
          importantCallHelps[0]=TestItem[i].Machineno;
        }
        else if(TestItem[i].Machineno < importantCallHelps[1] ||(importantCallHelps[1]==0){
        importantCallHelps[2]=importantCallHelps[1]
        importantCallHelps[1]=TestItem[i].Machineno;
        }
        else if(TestItem[i].Machineno < importantCallHelps[2] || (importantCallHelps[2]==0){
        importantCallHelps[2]=TestItem[i].Machineno;
        }
    }
    

    Mehr oder weniger das gleiche kommt auch noch fuer importantWarning und importantError

    TestItem sind 63 structs, die unter anderem die member Machineno und Sensorvalue haben. Diese Structs werden vorher beschrieben.
    Nun habe ich diese 63 structs und moechte die 3 Arrays importantCallHelps,importantWarning und importantError mit den 3 niedrigsten Machinennummern fuellen, wenn der Sensorwert dieser Machine = 1 ist!

    Nun habe ich mein System so eingestellt, dass nur die Machineno. 2 ein Error und ein Warning hat! Heisst in meinen 63 TestItem structs gibt's jetzt 2 struct bei denen Sensorvalue == 1 ist. Diese werden auch erkannt, aber in der Zeile

    importantWarning[0]=TestItem[i].Machineno;
    

    und in

    importantError[0]=TestItem[i].Machineno;
    

    Aber beim Debuggen wird genau in der jeweiligen Zeile nicht nur importantWarning[0] bzw. importantError[0] beschrieben, sondern auf importantHelpCalls[2] und importantWarning[2] 😕 😕

    Und so weit ich's gescheckt habe, haben alle unterschiedliche Speicherstellen, etc.....hat jemand ne Idee?
    bzw. versteht ueberhaupt jemand was ich meine 😉



  • Hast du den Code in den Beitrag kopiert oder nochmal abgeschrieben?
    Da sind ne Menge Fehler drinnen:

    for(int i=0:i<3;i++)
    

    Doppelpunkt statt Semikolon hinter 0 (vielleicht deshalb das Fehlverhalten)

    if(TestItem[i].Machineno < importantCallHelps[0] || (importantCallHelps[0]==0){
          importantCallHelps[2]=importantCallHelps[1]
          importantCallHelps[1]=importantCallHelps[0]
          importantCallHelps[0]=TestItem[i].Machineno;
        }
        else if(TestItem[i].Machineno < importantCallHelps[1] ||(importantCallHelps[1]==0){
        importantCallHelps[2]=importantCallHelps[1]
        importantCallHelps[1]=TestItem[i].Machineno;
    

    3 mal fehlt ein Semikolon als Befehlsabschluss



  • Ich habe den Text abgeschrieben, da der Rechner an dem ich programmiere keinen Internetanschluss hat!

    Die Syntax passt, es compiliert und das Programm wird ohne Fehlermeldung gestartet!



  • Wie hast du denn die Arrays deklariert? Mit [2] oder [3]?



  • hustbaer schrieb:

    Wie hast du denn die Arrays deklariert? Mit [2] oder [3]?

    mit [2]!

    Allerdings hat es sich vorerst erledigt! Da ich eine Access Violation bekommen habe(bei dem ich nicht auf den Grund gekommen bin, warum er auftritt), habe ich ein Backup genommen und probier gerade das Programm auf einer anderen Art zu schreiben!

    Danke trotzdem


  • Mod

    Verwirrter1234 schrieb:

    hustbaer schrieb:

    Wie hast du denn die Arrays deklariert? Mit [2] oder [3]?

    mit [2]!

    Allerdings hat es sich vorerst erledigt! Da ich eine Access Violation bekommen habe(bei dem ich nicht auf den Grund gekommen bin, warum er auftritt), habe ich ein Backup genommen und probier gerade das Programm auf einer anderen Art zu schreiben!

    Dann liegt in der Datendeklaration der Fehler. Wenn Du [2] angibst, dann gibt es nur die Index [0] und [1]!
    Dein Array hat aber 3 Member!



  • oh man.....manchmal sieht man vor lauter Waelder die Baeume nicht...oder so aehnlich 😉

    Danke 👍



  • Der Titel hat auf jeden Fall das Zeug ein Klassiker zu werden. 😉



  • ...den Namen hab ich ja auch (unabsichtlich) passend gewaehlt!
    Ich glaub ich brauch Urlaub


Anmelden zum Antworten