Fehler!
-
Moin Moin! ich hab da n problem und weiß nicht weiter:
AnsiString verb=Edit1->Text; int x=verb.Length(); char endung=verb[x]; switch(endung) { AnsiString stamm=verb.SetLength(l-2); case 'a':break; }Der sagt mir nur was von "Case umgeht die Initalisierung einer lokalen Variable"
Kann mir da jemand weiterhelfen?
Vielen Dank im voraus!
-
AnsiString stamm=verb.SetLength(l-2);Muss das denn sein? nehm das dort mal raus! Dieses Teil ist nähmlich weder von einer Überprüfung, noch von irgendetwas anderem betroffen. Das kannst du genauso gut vor switch schreiben (ist auch zu empfehlen).
Mfg Ominion
-
Hallo
und die Fehlermeldung kommt, weil du den switch-Block völlig durcheinander bringst
switch(endung) case 'a': { AnsiString stamm=verb.SetLength(l-2); break; }oder
AnsiString stamm; switch(endung) case 'a': { stamm=verb.SetLength(l-2); break; }Und natürlich den anderen Hinweis beachten, das der Code irgendwie sinnfrei ist
bis bald
akari
-
muss es nicht...
switch(endung){ case 'a': AnsiString stamm=verb.SetLength(l-2); break; }heissen?
gruessle
-
Besser nicht, denn spätestens bei einem case 'b' würde die selbe Fehlermeldung kommen (auch wenn dieser Block die Variable stamm nicht benötigt) - durch die zusätzliche Klammerung bleibt die Variable stamm auf den case'a'-Block beschränkt.
PS@fischdeba: Wenn sich die Klasse AnsiString halbwegs an die üblichen Konventionen für Array hält, ist der Ausdruck verb[verb.Length()] entweder der Null-Terminator oder undefiniert.
-
Hallo
@ CStoll : nein AnsiString hält sich nicht an die Konvention... das erste Element hat (wie in Delphi üblich) den Index 1
bis bald
akari
-
Ist AnsiString nicht ein BCB Datentyp?

-
Hallo
ja AnsiString ist in der VCL des Builders enthalten. Aber die VCL ist eine Umsetzung aus der Delphi-VCL, und so wurden einige Konventionen vondort übernommen, die in Standard-C++ anders sind.
Dazu nochmal der passende text aus der BCB-Doku :
AnsiString::operator []
...
BeschreibungEs wird das Zeichen an der im Indexwert idx angegebenen Position im String zurückgegeben. Die Indexnumerierung beginnt mit 1. Bei dem String "Hallo" und einem Indexwert von 2 würde beispielsweise das Zeichen 'a' zurückgegeben.
bis bald
akari
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum VCL/CLX (Borland C++ Builder) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Also Jungs, erstmal vielen Dank für die reichlichen Hinweise!
Den Fehler hatte ich gestern auch schon gefunen:AnsiString verb; switch(...) . . .AnsiString musste vor die Switch-Anweisung... Wie gesagt, nochmal DANKE!