AnsiString in Label1->Caption schreiben
-
Hallo ich habe ein Problem,
ich habe eine Klasse und mir dazu einen Konstruktor geschrieben.
In diesem Konstruktor wird einen Variable AnsiString Text mit einem Textfeld eines Edit1-Feldes beschrieben und als Instanz1 generiert.
Ich will nun zur Überprüfung diese Variable Instanz1.Text nach Label1->Caption schreiben.Code:
Label1->Caption = Instanz1.Text
liefert beim Compilieren folgenden Fehler:
"E2034 Konvertierung von 'AnsiString *' nach 'AnsiString' nicht möglich."
Ich benutzte BCB6
Kann mir da jemand helfen?
-
Hallo
Deine Beschreibung klingt ein bißchen wirr.
Aber die Fehlermeldung des Compiler sagt klar aus das die Eigenschaft <DeineKlasse>::Text ein Pointer ist, und du must zumindestens diesen Pointer dereferenzieren. Aber besser ist wenn du ganz auf den Pointer verzichtest und einen "normalen" AnsiString-Member draus machst.
bis bald
akari
-
OK zur Verdeutlichung:
Es gibt in einem Formular Form1 ein Edit1,Button1 und Label1 Feld
Deklaration:
class test{ int number; public: AnsiString Text; test(AnsiString,int); }; //Konstruktor test::test(AnsiString name,int num){ AnsiString Text=name; number=num; }Form1.cpp
void __fastcall TForm1::Button1Click(TObject *Sender) { //Instanz bilden Test Instanz1(Edit1->Text,Edit1->Tag); //AnsiString an Label übergeben Label1->Caption=Instanz1.Text;Wo sind da jetzt Zeiger????

-
Hallo
In deinem geposteten Quellcode sehe ich auch keinen. Und wenn man den Fehler behebt das die Klasse "test" einmal groß und einmal klein geschrieben wird dann kompiliert der Code auch.
Dein Fehler liegt also woanders, der Compiler hat jedenfalls immer recht
bis bald
akari
-
Tja das ist genau das Problem.
Wenn ich die letzte Zeile auskommentiere, funktioniert alles prima, der Compiler hat keine Fehlermeldung.
Sobald ich die Zeile wieder reinmache, erscheint beim Compilieren der Fehler
"E2034 Konvertierung von 'AnsiString *' nach 'AnsiString' nicht möglich."Weiss vielleicht jemand anders Rat?
-
Hallo
-Neues Projekt erstellen
-Ein Label, ein Edit und ein Button reinsetzen
- Event für Button erstellen und Code ergänzenclass Test{ int number; public: AnsiString Text; Test(AnsiString,int); }; //Konstruktor Test::Test(AnsiString name,int num){ AnsiString Text=name; number=num; } void __fastcall TForm1::BitBtn1Click(TObject *Sender) { //Instanz bilden Test Instanz1(Edit1->Text,Edit1->Tag); //AnsiString an Label übergeben Label1->Caption=Instanz1.Text; }Kompiliert fehlerlos
bis bald
akari
-
Das ist richtig.
Kompiliert fehlerlos ABER das Ergebnis ist: NULL--> Instanz1.Text ist ein Pointer meiner Meinung nach.
Aber wie krieg ich das dann hin?
-
Hallo,
mach es am besten so
test::test(AnsiString name,int num){ Text=name; number=num; }Gruß Daniel
-
JAUUUUUU! Jetzt klappts.
Auch wenn ichs noch nicht ganz verstanden habe warum

Trotzdem vielen Dank.
Wenn mir jemand auch noch eine Erklärung dafür hat, hab ich mal wieder was zum Studieren für späte Abendstunden

-
Hallo,
du hast AnsiString Text schon deklariert und zwar global und jetzt noch mal lokal und da wirt immer die lokalere Variable genommen.Gruß Daniel
-
Ja klar

Da hätt ich aber auch selber draufkommen sollen ........Danke an alle!
