Variablen in einem Array?



  • Kann ich Variablen in einen Array reinpacken?
    Ich mein das so, dass ich mir einen Array erstelle, wo ich diverse Variablen reinpacke, damit ich dass dann in einer schlefe einfacher hab.

    Ist das möglich?

    Danke
    Uruk



  • Du kannst dir Adressen von Variablen in einem Array speichern.
    Meinst du sowas?



  • 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...

    EDIT: Zweiteres hat sich schon erledigt...hab mitbekommen, das IDCs als int gelten....



  • Ö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