Frage zum Array



  • Hallo zusammen,
    ich habe ein Miniprogramm geschrieben, bei welchem ein Array während der Laufzeit erstellt und gefüllt wird. Ich möchte, dass der Inhalt des Arrays auf einem StringGrid erscheint. Dazu habe ich die Methode "MinMax" erstellt.

    Das Programm funktioniert auch einwandfrei, doch ist mir aufgefallen, dass wenn ich die Variabel i, mit der das StringGrid gefüllt wird; höher als die Größe des Arrays ist, so erscheinen irgendwelche komischen Kommazahlen. Das Array müsste eigentlich leer sein und es dürfte nichts angezeigt werden. Mich würde interessieren, warum dies so ist.

    Hier ist der Quelltext:

    void __fastcall TNumber::Rechnen ()
    {
     int array__inkr = -1;
     array = new float [9];
     for (int i=1; i<10; i++)
     {
       array__inkr++;
       array[array__inkr] = i*10;
     }
     MinMax (array,Form1->StringGrid1);
    }
    //---------------------------------------------------------------------------
    void __fastcall TNumber::MinMax (float *Array, TStringGrid *grid1)
    {
     for (int i=0; i<9; i++) // wenn ich i erhöhe, dann erscheinen komische Zahlen
     {                       // Warum???
      grid1->Cells[0][i] = Array[i]; 
     }                               }
    //---------------------------------------------------------------------------
    

    Vielen Dank
    lg, freakC++



  • Hallo

    Wenn du ein Array mit der Größe x mit einem Index größer gleich x ansprichst, liest du fehlerhafterweise Elemente aus die gar nicht mehr in dem Array drin sind. Da kann alles mögliche passieren, zum Beispiel Phantomwerte. Oder dein Programm stürzt ab.

    bis bald
    akari



  • Alles klar. Dann weiß ich bescheid!!

    Vielen Dank
    lg, freakC++


Anmelden zum Antworten