In Memofeld int-Werte untereinander schreiben/wie Syntax?



  • Danke akari,

    mein code sieht jetzt so aus:

    Memo1->Lines->Add(x1);
    Memo1->Lines->Add(x2);
    Memo1->Lines->Add(x3);
    Memo1->Lines->Add(x4);
    

    bei mehreren x-werten müsste ich eine Schleife benutzen.
    wie sieht das ganze den Korrekt mit einer for-Schleife aus?

    LG
    Eliza



  • Hallo

    Dann must du die Werte nicht in einzelne Variablen, sondern in ein Array packen. Dann kannst du darüber eine Schleife laufen lassen.

    bis bald
    akari



  • ist dieser Array soweit korrekt?:

    int Xarray[4];
    
    for(int i=1;i<5;i++)
    {
      Xarray[i]=i;
      Memo1->Lines->Add(Xarray[i]);
    }
    

    Er gibt die ersten 3 Ziffern richtig aus, die letzte 4. irgend einen Unsinn? 😕

    LG
    Eliza



  • Hallo

    In C++ werden die Elemente eines Array von 0 an indiziert. Ein Array mit 4 Elementen hat also die Elemente 0,1,2 und 3. Dein Code muß also so aussehen :

    int Xarray[4];
    
    for(int i=0;i<4;i++)
    {
      Xarray[i]=i;
      Memo1->Lines->Add(Xarray[i]);
    }
    

    bis bald
    akari



  • Hallo akari,

    dein Code funktioniert zwar, aber er gibt jetzt die Werte: 0,1,2,3 aus
    Ich wollte aber 1,2,3,4. Kann man das auch mit Anfangsindex 0 erreichen?

    LG Eliza



  • Eliza schrieb:

    Hallo akari,

    dein Code funktioniert zwar, aber er gibt jetzt die Werte: 0,1,2,3 aus
    Ich wollte aber 1,2,3,4. Kann man das auch mit Anfangsindex 0 erreichen?

    LG Eliza

    Weise doch einfach i+1 (statt i) zu, dann hast du 1-4.



  • Weise doch einfach i+1 (statt i) zu, dann hast du 1-4.
    

    ja, Danke! Das passt.



  • Hallo Eliza,

    kleiner Beitrag zum Grübeln:

    Wenn du in dein Memofeld jetzt wirklich nur "1", "2", "3", "4" schreiben wollen würdest, reicht folgender Code aus:

    for(int i(1); i != 5; ++i) Memo1->Lines->Add(IntToStr(i));
    

    Erklärungen:
    * Warum da keine geschweiften Klammern um den Körper der for-Schleife sind: wenn der Schleifenkörper nur aus einer Anweisung besteht, können die geschweiften Klammern weggelassen werden
    * Warum steht Alles in einer Zeile: Finde ich persönlich bei Schleifen mit nur einer Anweisung übersichtlicher.
    * Warum i mit i(1) initialisiert wird: das ist einfach eine Alternative zu i= 1
    * Warum die Laufbedingung i != 5 ist: Das finde ich in diesem Fall übersichtlicher und es funktioniert genauso gut wie i < 5 (Alternative)
    * Warum ich ++i schreibe um i nach jedem Schleifendurchlauf zu erhöhen:
    Das ist performanter als das Post-Dekrement.
    * Was IntToStr(i) ist: Dazu sagt dir deine BCB-Hilfe mehr 😉

    Viel Spaß beim Programmieren 🙂

    MfG



  • Hallo

    @ Kolumbus :
    Die einzig relevante Anmerkung ist die mit dem Post-Inkrement (und nicht Dekrement).
    Alles andere ist Geschmackssache (Formatierstil) oder unnötig (IntToStr).
    Das Array wurde extra eingebaut, um genau diesen Zugriff zu verdeutlichen. Im OP steht wie wir dazu gekommen sind.

    bis bald
    akari



  • @akari: Danke für die Analyse meines Post und die Berichtigung des Fehlers. Viel Relevantes war da auch nicht dabei. Was meinst du welcher der beiden letzten Posts Eliza mehr bringt? Was ist falsch daran jemandem Möglichkeiten / Alternativen zu zeigen? Was ist falsch daran zum Benutzen der BCB-Hilfe zu animieren? Was ist falsch daran nochmal zu posten, wenn der OP beantwortet ist, wenn es dem Fragesteller vielleicht den Horizont erweitert?

    Edit: @akari: Was fällt dir auf, wenn du die Thread-Überschrift und meinen Post zusammen betrachtest?


Anmelden zum Antworten