StringGrid EAccesViolation



  • Hallo,
    wir sollen für ein Projekt in der Schule einen Subnetrechner Programmieren.
    Also dacht ich mir ich schreib die ganzen Werte (subnetid, broadcast, hostrange usw.) in ein StringGrid

    im extremfall sind das dann aber schonmal 4194304 Subnetze.
    Aber knapp 4,2mio Zeilen mit 5 Spalten auszufüllen dauert zulange.
    Also dachte ich mir ich mache StingGrid Fenster nur so ca. 25 Zeilen Groß und beim Scrollen trägt es halt immer die 25 zeilen ein und den Rest lässt es.

    Testen wollte ich das indem ich mit

    StringGrid1->RowCount = StrToInt(AnzSN->Text);
    

    genug Zeilen erstelle und dann eifach mit einer for schleife mal durchzähle.

    void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
          int ARow, TRect &Rect, TGridDrawState State)
    {
            Label1->Caption =  StringGrid1->TopRow;
            for(int i=0; i<=25; i++)
            {
                    StringGrid1->Cells[0][i+StringGrid1->TopRow]=i+StringGrid1->TopRow;
            }
    

    Nun kommt es aber immer bei der ca. 1,05 Millionsten Zeile zu einer EAccesViolation. das passiert dann in 16 aufeinander folgenden Zeilen und danach nichtmehr.Eintragen darf ich in den darauffolgenden Zeilen dann aber aber auch nichts.
    Also es scheint ja das der speicher den ich da anspreche nicht Reserviert ist?
    Also wird beim Zeichnen der Rows kein Speicher Reserviert!?
    Und wenn dem so sei was muss ich tun das es das tut.
    Oder an was kann das liegen^^ ?
    mfg Andy


Anmelden zum Antworten