Auf Funktionen einer anderen Form zugreifen
-
include <string> ist die richtige Variante.
Verwendest du den entsprechenden Namespace? Sonst musst du std::string schreiben. Allerdings passt die Fehlermeldung nicht dazu...
Welche Zeile wird dir denn als fehlerhaft markiert?
-
Hallo
ich habe gelesen, dass es ein borland problem sei, da andere compiler den an sich korrekten code richtig kompilieren.
Auch der Borland Compiler kompiliert korrekten Code, dein Code ist also nicht an sich korrekt.
Und außer dem schon genannten fehlenden Namespace sehe ich in deinem Quellcode auch keine Fehlerquelle.bis bald
akari
-
wieso muss man überhaupt #include <string> einfügen??? Im Builder sind Strings doch sowieso vorhanden ...
Übrigends werden Strings Großgeschrieben deklariert!
String deintext;
anstatt
string deintext;
-
string ist der Typ aus dem Standard.
String ist der Typ aus der VCL. Das ist ein himmelweiter Unterschied.
-
Hallo
... und wenn du string[i] (der im Namespace [i]std lieg) verwenden willst, must du auch include <string> verwenden.
Richtig ist, das es in einfachen VCL-Projekten normalerweise kein Grund gibt, string zu verwenden, denn die VCL verwendet durchgehend String.bis bald
akari
-
danke vielmals
String statt string wars tatsächlich, bzw. mit std::string gehts auch. mir wurde beigebracht, dass ich das, was ich zusätzlich brauche, in der cpp datei mit #include hinzufügen soll. dort habe ich auch ein "using namespace std", daher versteh ich nicht, warum ich das std vorher schreiben muss? ich habe das allerdings auch so gelernt, dass man string kleinschreiben darf. und warum funktioniert zb.
string s = "Teststring";
tadellos? (wenn #include <string>)
ich habe das kurz ausprobiert, mit einem edit, einen label und einem button:
void __fastcall TForm1::Button1Click(TObject *Sender) { String s = Edit1->Text.c_str(); Label1->Caption = s.c_str(); }
das funktioniert ohne "#include <string>".
void __fastcall TForm1::Button1Click(TObject *Sender) { std::string s = Edit1->Text.c_str(); Label1->Caption = s.c_str(); }
hier ist aber "#include <string>" erforderlich.
brauche da offensichtlich noch nachhilfe!
danke euch schonmal sehr
-
Hallo
Es wurde doch schon alles gesagt. String kommt direkt aus der VCL des Builders und ist immer verfügbar, solange include <vcl.h> vorher deklariert ist.
string ist ein Datentyp aus dem C++ Standard und zwar auch im Builder vorhanden, aber include <string> muß vorher manuell deklariert werden. Dann kann man mit using namespace std; noch vermeiden, jedesmal den Namespace std noch anfügen zu müßen. Warum du dann aber trotzdem noch einen Fehler bekommst, ist für uns hier nicht einsehbar.bis bald
akari
-
Nachtrag zu akaris Post:
Wenn du String verwendest, kannst du dir auch getrost das c_str() ersparen:
void __fastcall TForm1::Button1Click(TObject *Sender) { String s = Edit1->Text; Label1->Caption = s; }
Ich würde empfehlen, innerhalb der VCL ausschließlich String zu verwenden.
-
auf die gefahr hin, dass es eine sehr doofe frage ist:
ob ich String oder std::string verwende kommt am ende auf das selbe hinaus?
also kann ich für einfache dinge String verwenden, aber sobald ich jetzt "erweiterte funktionen" wie zb. find() gebrauche, muss ich mit std::string arbeiten?
ist das der unterschied?danke für die erklärungen!
-
Hallo
Du kannst für alles String verwenden. Als Ersatz für string::find gibts es String::Pos.
bis bald
akari
-
gut, ich glaube, ich steig da langsam durch!
habt dank