Was habe ich hier falsch gemacht :(
-
Hallo, beim folgenden Code...
for(int zeichen=0; zeichen<Edit1->Text.Length(); zeichen++) { if(Edit1->Text[zeichen]=='+') { iZ1=StrToInt(Edit1->Text.SubString(1,zeichen-1)); iZ2=StrToInt(Edit1->Text.SubString(zeichen+1,Edit1->Text.Length())); Panel1->Caption=iZ1+iZ2; } }...kommt folgende Fehlermeldung beim Ausführen:
Im Projekt Project1.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 40006A2F in Modul 'rtl60.bpl'. Lesen von Adresse 1875FF19'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.Hoffe mir kann einer helfen
Danke im Voraus bye
-
fang deine Schleife mal bei 1 an...
for(int zeichen = 1; zeichen < Edit1->Text.Length(); zeichen++){ if( Edit1->Text[zeichen] == '+'){ iZ1 = StrToInt(Edit1->Text.SubString(1, zeichen-1)); iZ2 = StrToInt(Edit1->Text.SubString(zeichen+1, Edit1->Text.Length() )); Panel1->Caption = IntToStr(iZ1+iZ2); //geht auch ohne IntToStr, gefällt mir persönlich aber besser... } }jetzt sollte die OutOfIndex-Meldung verschwunden sein...
-
ach logisch

danke
-
sukkkkkkkeerrr schrieb:
ach logisch
Ist es das? Warum?
-
Joe_M. schrieb:
sukkkkkkkeerrr schrieb:
ach logisch
Ist es das? Warum?
Weil's den Index 0 bei einem AnsiString nicht gibt.
-
Hallo
Joe wollte damit ausdrücken, das es in der C/C++ Welt sehr unüblich, wenn nicht sogar gegen den Standard ist, das ein Array nicht mit dem Index 0 beginnt.
Auch in der VCL ist AnsiString das einzigste Array mit dieser EIgenschaft.bis bald
akari