Borland C++ if powoduje błąd


(karton16) #1

Witam,

mam taki program

 

http://wklej.to/ZJmQ9

 

miejsce niepoprawnego działania:

 


(stasinek) #2
nie rozumiem po co tak
dl=sys2.Length();
dlint=StrToInt(dl);

skoro mozna

dlint = sys2.Length();

 

dlaczego nie sprawdzasz dlint przed wejściem w do while?

resetujesz sys2 = “” w funkcji reset a przelicz wchodzisz bez sprawdzania licz i dlint!?

 

licz ustawiasz na starcie = 0

a to już podstawowy błąd - AnsiString w odróżnieniu od char* zaczyna się od 1

no i czy napewno się inicjalizuje? 

lepiej inicjalizuj zmienne w konstruktorze i wstaw do Unit.h jako publiczny składnik klasy Form1

 

licz moze być nawet na starcie większe niż sys2.Length() gdzieś to jeszcze modyfikujesz?

 - 0 to źle

licz = minimum 1 maximum sys2.Length();

 

adresowanie sys2[1 > licz>1] dla sys2 == “” spowodu powodje Acess Violation w char AnsiString::operator[] (int indeks) { return c_str[indeks-1]; }


(karton16) #3

Ok, wielkie dzięki za odpowiedź, problem tkwił w zerach. Więc ten problem rozwiązany. Teraz nasuwa mi się pytanie. Skoro zmienna String jest tablicą Charów i skoro w Borlandzie nie można używać 0, to w jaki sposób można poruszać się po tej tablicy lub jak zrobić by odczytać wartość z tablicy o indeksie 0