Label1->Caption wert in ein definirten char wert[6] schreiben
-
serv,
ich möchte in ein definirtes char den caption wert eines Labels schreiben!!!Wie bekomm ich des hin??? Bei mir bringt compiler dauernd :
[C++ Fehler] Unit1.cpp(81): E2034 Konvertierung von 'AnsiString' nach 'const char *' nicht möglichwas kann ich dagegen tun???
danke schon mal
gruß alex
-
Hallo,
Warum willst du das? In welchen Zusammenhang willst du das machen?
Ansonsten hilft dir die Funktion AnsiString::c_str().
-
zu erst solltest du die FAQ verwenden, unter AnsiString -> nach char* konvertieren
-
mit AnsiString::c_str() hab ich es auch schon probiert, da wird das wort zwar gespeichert aber unbrauchbar, denn wenn ich es auslös bekomm ich was kommplett wirres zurück.
Wegen dem zusammenhang:
ich lasse von einer 2 form etwas in das Label meiner 1 Form schreiben.
danach will ich das mit einem button klick der wert der in das label caption geschrieben wurde in einer char variable gespeichert wird.
-
Und wo genau liegt da jetzt das Problem?
-
schon mal strncpy angeschaut?
-
ja des hab ich alles schon probiert!!!
das problem liegt darin das der compiler mir immer en fehler bringt!!!
[C++ Fehler] Unit1.cpp(81): E2034 Konvertierung von 'AnsiString' nach 'const char *' nicht möglich
-
Hallo
wie wärs wenn du mal Quellcode zeigen würdest? Ich rate mal, das du an strncpy einen AnsiString übergibst, aber du wie schon gesagt AnsiString::c_str() benutzen sollst.
Außerdem vermute ich das du überhaupt kein char* brauchst, wenn du nur Daten zwischen VCL-Controls austauschen willst. Benutze am besten immer AnsiString.
bis bald
akari
-
also,
ich hab ein char z.b.
char *x[]={"hallo","bla",""};
und jetzt hab:
Label1->Caption="hallo"
und jetzt möchte ich in x[3] den wert von Label->Caption schreibn
aber des will der net machen!!!
gruß alex
-
und du hast dir scheinbar immer noch nicht die FAQ angeschaut.
-
helft-alex schrieb:
und jetzt möchte ich in x[3] den wert von Label->Caption schreibn
Du kannst in x[3] nichts schreiben, denn erstens ist der letzte gültige Index 2 und zweitens zeigen deine char-Zeiger auf Stringliterale, in die du gar nicht schreiben darfst. Benutz AnsiString, nicht char*.
-
Jetzt zu deinem Quelltext. Das geht so gar nicht. Du hast mit x ein Array auf const char* erzeugt. Da darfst du nichts reinschreiben. Klar du hast kein const davor stehen aber du weist Stringliterale zu (sowas wie "Hallo") und die sind nunmal const. Warum brauchst du überhaupt ein Array auf char*. Nimm statt dessen ein Array auf AnsiString oder einen vector auf AnsiString oder eine TStringList oder ....
Bei einem vector auf AnsiString würde das so aussehen.std::vector<AnsiString> x; x.push_back("Hallo"); x.push_back("bla"); x.push_back(Label1->Caption); // Zugriff dann z.Bsp. so AnsiString text = x[3];[edit]Das mit dem zu großen Index habe ich glatt übersehen.
[edit]
-
man dankt, habs hinbekommen
gruß alex