ShowMessage-Bug?
-
Hi Community!
Schreibe mir gerade meinen eigenen String, ja ich weiß unsinnig, gibt ja bereits AnsiSting und alles, trotzdem eine gute Übung für das Überladen der Operatoren, Einsetzen eines Vektors und alles...Auf jeden Fall kann man meinen String "TString" auch als Array ansehen. Die Methode des Operators [] gibt einfach einen char zurück, das funktioniert laut Debugger auch alles, nun gib ich mir eben dieses Zeichen aus:
TString test = "aeiou"; char ch=test[1]; //müsste 'b' sein ShowMessage("ch=" + ch);Das Messagefenster zeigt mir aber nur ein leeres Fenster an, obwohl ch 100%ig einen Wert besitzt

Ändere ich die ShowMessagezeile auf:ShowMessage(ch);funktioniert es aber wie gewollt
Ist das ein Fehler in der ShowMessage-Funktion? Denn anders könnte ich mir es nicht erklären!
EDIT: Dann müsste es doch eigentlich ein AnsiString Problem sein:
extern PACKAGE void __fastcall ShowMessage(const AnsiString Msg);
-
ShowMessage(String("ch=") + ch);Denk mal drüber nach ...

-
Jansen schrieb:
ShowMessage(String("ch=") + ch);Denk mal drüber nach ...

Hmmm, ist mir ein Rätsel, denn z.B.
Label1->Caption = "Ergebnis = " + IntToStr(ergebnis);funktioniert auch.
Aber ich werde drüber nachdenken, ich komm da selber drauf
, auch wenn es unser Lehrer in der Schule selber nicht wusste, aber wäre nicht das erste Mal, dass man den Professoren etwas beiringt 
Danke Jansen!
-
Ich glaub ich habs:
Ich muss es deshalb davorschreiben, damit die Operation + des AnsiStrings in Kraft tritt. Die Initialisierung des AnsiStrings durch "ch=" wird durch eine Referenz zurückgegeben. Dadurch ist dann auch der Operator + "definiert". Ich glauben, ich bin auf dem richtigen Weg denn auch beiLabel1->Caption = "Ergebnis = " + IntToStr(ergebnis);steht bei Ergebnis ein AnsiString (die Referenz), womit auch das erklärt wäre
Werde jedoch noch weiter darüber nachdenken
