TSpinEdit wirft immer ERangeError



  • Hallo

    Ich habe mit Google nach dem Problem gesucht, aber es kommen immer nur Seiten auf Russisch...
    Folgender Code wirft ein ERangeError:

    void __fastcall TSetupForm::SpecPanel_IntervalChange(TObject *Sender)
    {
      for(unsigned short int Check = 0; Check < SpecPanel_Interval->Text.Lenght(); Check++)
      {
        if(SpecPanel_Interval->Text[Check] == '+'
        || SpecPanel_Interval->Text[Check] == '-'
        || SpecPanel_Interval->Text[Check] == '.')
        {
          SpecPanel->Interval->Text.Delete(Check, 1);
        }
      }
    }
    

    Wieso?

    MfG, EOutOfResources



  • Hallo

    Du zählst von 0 bis Lenght -1, aber die Indizierung bei VCL-String beginnt bei 1.

    Außerdem hat dein Delete keine Auswirkung, weil du es auf eine temporäre Instanz anwendest, die danach ohne weitere Zuweisung einfach verfällt.

    bis bald
    akari



  • Vielen Dank!


Anmelden zum Antworten