Array vs. Memo^^



  • Wenn ich folgendes vereinfacht in ein Memo Feld ausgeben möchte,

    int arr[2][3];
       arr[0][0] = 1;  //diese schreibweise soll falsch sein ?!?! siehe Fehlermeldung
       arr[0][1] = 2;
       arr[0][2] = 3;
       arr[1][0] = 11;
       arr[1][1] = 12;
       arr[1][2] = 13;
    ...
    

    wie kann ich es am besten lösen ?????

    Also meine Lösung, ist viel zu viel Anstrengend und auch noch
    Falsch (Syntax) 😃

    Memo->Lines->Add = arr[0][0];
    Memo->Lines->Add = arr[0][1];
    Memo->Lines->Add = arr[0][2];
    
    ......
    

    Brauche unbedingt Hilfe....

    Programm: VCL C++ Builder 5

    Fehlermeldungen :
    Array muß mindestens ein Element enthalten.



  • Hallo

    Für nächstes mal: Passenderer Titel wäre "2D-Array in TMemo ausgeben".

    Zu deiner Frage:

    int arr[2][3];
    for(unsigned int OutputX = 0; Output < SizeX /*In deinem Fall ist SizeX 2*/; OutputX++)
      for(unsigned int OutputY = 0; Output < SizeY /*In deinem Fall ist SizeY 3*/; OutputY++)
        Memo->Lines->Add(IntToStr(arr[OutputX][OutputY]));
    

    MfG, EOutOfResources



  • EOutOfResources schrieb:

    Hallo

    Für nächstes mal: Passenderer Titel wäre "2D-Array in TMemo ausgeben".

    Zu deiner Frage:

    int arr[2][3];
    for(unsigned int OutputX = 0; Output < SizeX /*In deinem Fall ist SizeX 2*/; OutputX++)
      for(unsigned int OutputY = 0; Output < SizeY /*In deinem Fall ist SizeY 3*/; OutputY++)
        Memo->Lines->Add = IntToStr(arr[OutputX][OutputY]);
    

    MfG, EOutOfResources

    super vielen dank.
    aber warum zeigt mein Programm die Fehlermeldung ?

    "Array muß mindestens ein Element enthalten."



  • markus krauss schrieb:

    aber warum zeigt mein Programm die Fehlermeldung ?

    Im Code, den du uns gezeigt hast sind keine Fehler...



  • Hallo

    Woher diese Fehlermeldung kommt, kann ich dir auch nicht sagen, das liegt vermutlich an anderem Quellcode in deinem Projekt.
    Wenn man ein paar Fehler im Quellcode von EOutOfResources beseitigt, dann lä0t es sich jedenfalls kompilieren und ausführen :

    int arr[2][3];
    unsigned int SizeX = 2;  /*In deinem Fall ist SizeX 2*/
    unsigned int SizeY = 3;  /*In deinem Fall ist SizeY 3*/
    for(unsigned int OutputX = 0; OutputX < SizeX; OutputX++)
      for(unsigned int OutputY = 0; OutputY < SizeY; OutputY++)
        Memo->Lines->Add(IntToStr(arr[OutputX][OutputY]));
    

    bis bald
    akari



  • Sizen können ruhig const sein, da das Array auf dem Stack ist.



  • EOutOfResources schrieb:

    Sizen können ruhig const sein, da das Array auf dem Stack ist.

    habs mit const int versucht.
    dann kommt folgendes:

    [C++ Fehler] Konstante-Variable 'arr' muß initialisiert sein.
    Array muß mindestens ein Element enthalten.



  • Hallo

    Nicht das array soll const sein...
    Und die Fehlermeldung dadrunter ist für uns hier nicht nachvollziehbar. Du must uns mehr von dem relevanten Quellcode zeigen.

    bis bald
    akari



  • markus_krauss schrieb:

    habs mit const int versucht.
    [C++ Fehler] Konstante-Variable 'arr' muß initialisiert sein.

    Kannst du nicht lesen? Ich habe geschrieben, dass die Objekte, die die Grösse des Arrays angeben, const sein können. Zudem hat akari und ich bereits gesagt, dass in dem gezeigtem Code keine Fehler sind! Und wieso öffnest du drei Threads?



  • EOutOfResources schrieb:

    markus_krauss schrieb:

    habs mit const int versucht.
    [C++ Fehler] Konstante-Variable 'arr' muß initialisiert sein.

    Kannst du nicht lesen? Ich habe geschrieben, dass die Objekte, die die Grösse des Arrays angeben, const sein können. Zudem hat akari und ich bereits gesagt, dass in dem gezeigtem Code keine Fehler sind! Und wieso öffnest du drei Threads?

    int arr[2][3];
    
       arr[0][0] = 1;  
       arr[1][0] = 2;
       arr[2][0] = 3;
    
       arr[0][1] = 11; 
       arr[1][1] = 12;
       arr[2][1] = 13;
    
       arr[0][2] = 22; 
       arr[1][2] = 23;
       arr[2][2] = 24;
    
       arr[0][3] = 33; 
       arr[1][3] = 34;
       arr[2][3] = 35;
    

    Das ist mein Code, richtig geschrieben...



  • markus krauss schrieb:

    int arr[2][3];
    
       arr[0][0] = 1;  
       arr[1][0] = 2;
       arr[2][0] = 3; //Fehler
    
       arr[0][1] = 11; 
       arr[1][1] = 12;
       arr[2][1] = 13; //Fehler
    
       arr[0][2] = 22; 
       arr[1][2] = 23;
       arr[2][2] = 24; //Fehler
    
       arr[0][3] = 33; //Fehler
       arr[1][3] = 34; //Fehler
       arr[2][3] = 35; //Fehler
    

    Grundlagen in C++ fehlen auch...
    Ein Array [5] geht von 0 bis 4.



  • EOutOfResources schrieb:

    markus krauss schrieb:

    int arr[2][3];
    
       arr[0][0] = 1;  
       arr[1][0] = 2;
       arr[2][0] = 3; //Fehler
    
       arr[0][1] = 11; 
       arr[1][1] = 12;
       arr[2][1] = 13; //Fehler
    
       arr[0][2] = 22; 
       arr[1][2] = 23;
       arr[2][2] = 24; //Fehler
    
       arr[0][3] = 33; //Fehler
       arr[1][3] = 34; //Fehler
       arr[2][3] = 35; //Fehler
    

    Grundlagen in C++ fehlen auch...
    Ein Array [5] geht von 0 bis 4.

    wieso ist doch richtig ?!?!?!

    int arr[2][3]; //spalte ist arr[2]  und zeile ist arr[3]
    
       arr[0/*Spalte 1*/][0/*Zeile 1*/] = 1;   //Zeile 1  
       arr[1/*Spalte 2*/][0/*Zeile 1*/] = 2;
       arr[2/*Spalte 3*/][0/*Zeile 1*/] = 3;  
    
       arr[0][1] = 11;   //Zeile 2  
       arr[1][1] = 12;
       arr[2][1] = 13;
    
       arr[0][2] = 22;   Zeile 3
       arr[1][2] = 23;
       arr[2][2] = 24;
    
       arr[0][3] = 33;   // Zeile 4 
       arr[1][3] = 34;
       arr[2][3] = 35;
    


  • Hallo

    Zur Erklärung kurz nur eine Dimension : Mit arr[2] deklarierst du ein Array mit genau 2 Elementen. Die kannst du mit arr[0] ind arr[1] ansprechen. Der Zugriff auf arr[2] ist falsch, dieses Element gibt es nicht!

    bis bald
    akari



  • int arr[3][4];  // fehler geändert
    
       arr[0][0] = 1;
       arr[1][0] = 2;
       arr[2][0] = 3;
    
       arr[0][1] = 11;
       arr[1][1] = 12;
       arr[2][1] = 13;
    
       arr[0][2] = 22;
       arr[1][2] = 23;
       arr[2][2] = 24;
    
       arr[0][3] = 33;
       arr[1][3] = 34;
       arr[2][3] = 35;
    

    Fehler gändertn aber fehlermeldung da:
    **
    [C++ Fehler] Bezeichner 'arr' mehrfach deklariert
    [C++ Fehler] Array muß mindestens ein Element enthalten.
    **



  • Hallo

    Bitte lies doch auch mal die Fehlermeldungen des Compilers! Die sind immerhin auf Deutsch. Die erste Meldung ist doch klar und verständlich!

    bis bald
    akari



  • markus krauss schrieb:

    **[C++ Fehler] Bezeichner 'arr' mehrfach deklariert
    [C++ Fehler] Array muß mindestens ein Element enthalten.
    **

    Da steht ja was falsch ist.
    Wahrscheinlich steht irgendwo ein int vor einem arr .



  • EOutOfResources schrieb:

    markus krauss schrieb:

    **[C++ Fehler] Bezeichner 'arr' mehrfach deklariert
    [C++ Fehler] Array muß mindestens ein Element enthalten.
    **

    Da steht ja was falsch ist.
    Wahrscheinlich steht irgendwo ein int vor einem arr .

    was soll ich dann tun?

    das ist ein 3 x 4 Feld. Da muss ich doch alle auflisten, oder ?!?!

    das klappt immer noch net.

    und außerdem ist nirgendswo ein int vor einem arr. nur in der 1. zeile



  • außerdem denke ich mal, dass mehr werte haben will, als nur =
    arr[0][0] = 1;

    wahrscheinlich so
    arr[0][0] = 1,2; ?!?!?!?!



  • markus krauss schrieb:

    arr[0][0] = 1,2; ?!?!?!?!

    Wie kommst du jetzt hier drauf? Es sind ja immer noch Variablen vom Typ int .
    Dann poste bitte mal den ganzen Code, sonst wird das heute nichts mehr...



  • EOutOfResources schrieb:

    markus krauss schrieb:

    arr[0][0] = 1,2; ?!?!?!?!

    Wie kommst du jetzt hier drauf? Es sind ja immer noch Variablen vom Typ int .
    Dann poste bitte mal den ganzen Code, sonst wird das heute nichts mehr...

    Der ganze Code. Ich wollte klein anfangen, deshalb noch keine Buttons. aber wie
    soll ich weiter machen, wenn es nicht mal die Zeilen erkennt.^^

    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    
    int arr[3][4];
    
        arr[0][0] = 1;
        arr[1][0] = 2;
        arr[2][0] = 3;
    
        arr[0][1] = 11;
        arr[1][1] = 12;
        arr[2][1] = 13;
    
        arr[0][2] = 22;
        arr[1][2] = 23;
        arr[2][2] = 24;
    
        arr[0][3] = 33;
        arr[1][3] = 34;
        arr[2][3] = 35;
    
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    

Anmelden zum Antworten