Neue Methode



  • Hallo zusammen,
    ich habe eine Methode erstellt, die ein StringGrid füllen soll. Urprünglich sah diese so aus:

    void __fastcall TCelirity::VRotation (TStringGrid *grid)
    {
     for (int i = 1; i<15; i++) //R bzw. i wird erstellt
      {
       R = i;
       float R1 = R / Rmax;
    
       if (R1 <= 1) V[i] = Vmax * R1; //Formelauswahl
       else V[i] = CGM / pow(R,0.5);
    
       grid->Cells[0][0] = "--------------------";
       grid->Cells[1][0] = "Wert für V";
       grid->Cells[0][i] = "R = " + FloatToStr (i);
       grid->Cells[1][i] = FloatToStrF (V[i], ffNumber, 8, 0);
      }
    }
    

    Nun wollte ich diese aber nochmal unterteilen, um unabhäniger zu werden. Ich möchte nämich die eigentliche Formel und die Zuweisung ins StringGrid in zwei Methoden verpacken.

    So sah mein Vorschlag aus:

    void __fastcall TCelirity::VRotation (void)
    {
      float R1 = R / Rmax;
      int i;
      if (R1 <= 1) V[i] = Vmax * R1; //Formelauswahl
        else V[i] = CGM / pow(R,0.5);
    
    }
    //------------------------------------------------------
    void __fastcall TCelirity::Table1 (TStringGrid *grid)
    {
    
        for (int i = 1; i<15; i++) //R bzw. i wird erstellt
        {
         VRotation ();
    
        grid->Cells[0][0] = "--------------------";
        grid->Cells[1][0] = "Wert für V";
        grid->Cells[0][i] = "R = " + FloatToStr (i);
        grid->Cells[1][i] = FloatToStrF (V[i], ffNumber, 8, 0);
        }
    
    }
    

    Leider funktioniert das nicht so, da wenn ich das Programm starte ein Meldungfenster, die mir sagst, dass es in diesem Project eine Zugriffsverletzung gibt. Könnt ihr mir helfen??

    Vielen Dank
    lg, freakC++



  • i ist in Zeile 5 undefiniert.



  • was ist denn Rmax? wenn es 0 ist, dann ist eine Division durch 0 nicht definiert!



  • Hallo

    Um wittes Kommentar zu erklären : Du must das i, das in der Schleife von Table1() hochgezählt wird, als Parameter an VRotation übergeben. Dann brauchst du in VRotation auch i nicht mehr extra zu deklarieren, denn bisher bekommt das dort nur einen zufälligen Wert.
    Stichwort Gültigkeit.

    bis bald
    akari



  • Vielen Dank für eure raschen Antworten. Die Fehlermeldung erscheint nicht mehr, doch leider ist die ganze Tabelle mit Nullen gefüllt. Bei der Berechnung geht also noch etwas schief. Ich hätte es eigentlich noch sagen müssen, aber Rmax, CGM, Vmax sind alles Konstanten.

    Vielen Dank
    lg, freakC++


Anmelden zum Antworten