Variablen in einem Array?



  • Öh beschreibe mal etwas genauer, was du erreichen willst. So recht habe ich das noch nicht verstanden^^



  • int Element[8] 0 { IDC_ABC,IDC......};
    
    	if(pWnd->GetDlgCtrlID() == Element[0])
    		if(SpinData.Buttons[0] != NULL)
    			pDC->SetTextColor(RGB(0,150,0));
    		else
    			pDC->SetTextColor(RGB(255,0,0));
    

    Aber das klappt jetzt halt.

    Das mit den Variablen versteh ich aber noch net so....



  • Uruk-h4j schrieb:

    hmm müsste man mal probieren.
    Geht das auch mit IDC_Elementen? also das speichern im Array mein ich. Fällt mir gerade so ein...

    IDC_ - Elemente ?! Dir ist klar, dass das schlicht weg einfach konstante Zahlen sind, eben ID's.

    Natürlich geht das! Ein Array ist übrigens eine 'Kette' von Variablen.

    Es gibt 2 Arten:

    1. Statisches Array:
    Erstellt ein Int-Array mit 10 Elementen und setzt alle auf 0.

    // Anlegen:
    int iArray[10] = { 0 }; // Initialiserung
    // Freigeben:
    // [nicht erforderlich]
    

    2. Dynamisches Array:
    Erstellt ein Int-Array mit 'iLength' Elementen und setzt alle auf 0.

    // Anlegen:
    int* piArray = NULL;
    int iLength = 0;
    if(cin >> iLength && iLength) // Länge wird vom Benutzer bestimmt
       piArray = new int[iLength](0);
    // Freigeben:
    delete [] piArray;
    


  • also wenn du es so meinst

    int iA = 0;
    int iB = 10;
    int iC = 20;
    int iArray[]={iA, iB, iC};
    

    geht das nur wenn bei erstellung der Array die variablengröße bekannt ist. ist sie es nicht, steht in iArray[2] der wert den iC zu beginn hatte evtl 0 und nicht der dem ihm zur laufzeit zugewiesen wurde evtl 30, wenn du die Array in der Header erstellst.

    int iArray[10];
    

    geht es zu laufzeit nur so

    iArray[0] = iA;
    iArray[1] = iB;
    iArray[2] = iC;
    

    hierbei hast du die Actuellen werte die iA, iB, iC zu laufzeit haben.
    geht so mit allen variablen typen.



  • PS: Hier empfehlen sich sinnvollerweise auch (for-)Schleifen 😉 . Zu beachten ist hier natürlich noch der 0-basierte Index!



  • hmm hilft mir net so, oder ich habs falsch erläutert.

    Also ich habe 7 Statische Elemente, die mir was anzeigen sollen.
    Die funktion für alle 7 ist die selbe. Nun liegt das doch nahe, dass ich das in eine kleine for() schleife einbinden möchte.

    Gedacht hab ich mir einen Array z.B. Variablen[7] = {m_var1,m_var2,...}; Wobei nachher die m_var's halt etwas anzeigen sollen.

    im Prinzip:
    m_var1 = /*ergebnis*/ 12364,34; //sowas hat. und dann halt abfragen mit if-else

    Weil in der for()-schleife folgt eine If-Abfrage und das dann 7 mal machen ist recht viel schreibkram und sieht zudem auch noch "billig" aus...



  • also wenn dir das net weiterhilft weis ich nicht was du noch gebrauchen könntest hast alles was du brauchst um das durchzusetzen was du willst. 😉

    du muist die array Variablen[7] = {m_var1,m_var2,...}; nur dort erstellen wo du den variablen den wert zuweist und den statischen elementen übergeben willst.



  • aahhh sry... ich ruf das falsch auf...
    Man sollte schon member-vars nehmen und den array nicht im OnTimer füttern.
    OnInit wäre wohl besser geeignet...



  • Hab immernoch ein Problem damit. Und zwar möchte ich diese Zeilen:

    m_Spin1 = SpinBuffer[0];
    		m_Spin2 = SpinBuffer[1];
    		m_Spin3 = SpinBuffer[2];
    		m_Spin4 = SpinBuffer[3];
    		m_Spin5 = SpinBuffer[4];
    		m_Spin6 = SpinBuffer[5];
    

    so zusammenfügen, dass wo etwas bei rauskommt:

    SpinBuffer[6] = {m_Spin1,m_Spin2,m_Spin3,m_Spin4,m_Spin5,m_Spin6};
    

    Aber irgendwas mach ich falsch oder hab einen denkfehler. Diese Fehlermeldung schmeißt er mir raus:
    ...\sw24r6dlg.cpp(151) : error C2059: Syntaxfehler: '{'
    ...\sw24r6dlg.cpp(151) : error C2143: Syntaxfehler: Es fehlt ';' vor '{'
    ...\sw24r6dlg.cpp(151) : error C2143: Syntaxfehler: Es fehlt ';' vor '}'

    Aber nur, wenn ich den Array als Member Anlege.

    m_Spin1...7 ist INT genau wie der Array.

    Weiß einer was ich falsch mache?



  • Diese Initialisierungslisten funktionieren nur bei der Deklaration des Arrays ( int SpinBuffer[6]={...}; ), nicht bei einer späteren Zuweisung ( int SpinBuffer[6];...;SpinBuffer={...}; ) - wenn du nachträglich etwas zuweisen willst, mußt du das elementweise machen.



  • so deklarierst du ne array

    SpinBuffer[6] = {m_Spin1,m_Spin2,m_Spin3,m_Spin4,m_Spin5,m_Spin6};
    

    zur laufzeit ne member Array belegen geht nur

    SpinBuffer[0] = m_Spin1;
    SpinBuffer[1] = m_Spin2;
    SpinBuffer[2] = m_Spin3;
    SpinBuffer[3] = m_Spin4;
    SpinBuffer[4] = m_Spin5;
    

    NEW EDIT:
    @CStoll du schreibst schneller 😉 wollte dich nicht nochmal zetieren



  • ahh ok...danke!



  • Hab doch noch ne Lösung gefunden.

    Man kann die Member-Vars so ändern dass sie gleich als teile des Arrays fungieren.
    Auch wenn ihr das schon wisst...


Anmelden zum Antworten