If Anweisung und 2 Ansistrings vergleichen?



  • Warum bekomme ich bei folgendem Befehle einen Fehler:

    if(AnsistringA == AnsistringB) {}

    und bei folgendem keinen:

    if(Ansistring A == "0") {}

    Ich hab in der Hilfe das gefunden:

    if( operator ==(AnsistringA& AnsistringB)) {}

    geht aber auch nicht.

    Kann mir bitte jemand den Befehl hinschreiben, wie ich die beiden Strings vergleichen kann?

    Funktioniert eigendlich das or in diesen Anweisungen?

    if((AnsistringA==AnsistringB) or (AnsistringA=="0")) {}

    Das wäre nämlich das, was ich brauche.

    Wäre sehr dankbar, wenn mir jemand dabei helfen könnte.

    mfg b-star



  • Falsches Forum? Ansistring ist Borland, oder?



  • @Helium: Richtig

    b-star schrieb:

    Warum bekomme ich [...]einen Fehler:[...]

    ... weil du etwas falsch machst. Das versucht dir eigentlich der Compiler auch mit einer Fehlermeldung mitzuteilen die in plain english da steht. Wenn du sie nicht verstehst frage hier nach. Das Problem ist allerdings, dass "ein Fehler" nicht grade eine weitreichende Fehlermeldung ist. Bzw. der BCC hat mir bisher noch nie eine Meldung ausgespuckt, dass in der Zeile "ein Fehler" (wobei ein als unbestimmtes Attribut zu lesen ist) steht, sondern meist hat er das genauer ausgeführt...

    b-star schrieb:

    Funktioniert eigendlich das or in diesen Anweisungen?

    if((AnsistringA==AnsistringB) or (AnsistringA=="0")) {}

    Das wäre nämlich das, was ich brauche.

    Was du nötig hast, ist dir einen Überblick über die Operatoren zu verschaffen die C(++) bietet. (logical or)



  • Was du nötig hast, ist dir einen Überblick über die Operatoren zu verschaffen die C(++) bietet. (logical or)

    Wieso. Solte Ansistring operator == entsprechend implementiert haben, ist das doch ein gültiges Beispiel.



  • Der Operator == ist für AnsiString implementiert (das sollte also gehen), einen Operator or gibt es meines Wissens aber nicht (||).



  • Meines Wissens nach schon.



  • Helium schrieb:

    Meines Wissens nach schon.

    Woher weißt du den von diesem Operator. Mir ist der im bezug auf C/C++ auch nur als || bekannt. Mein Compiler kann damit übrigens auch nichts anfangen.



  • Guck hier
    oder hier. Beidesmal steht da es sei in C++ ein Schlüsselwort.



  • Das sind Makros, die bekommt der Compiler überhaupt nicht zu lesen.



  • Mitdenken!

    in C brauchte man iso646.h, in c++ sind es Schlüsselwörter.





  • Helium schrieb:

    Mitdenken!

    in C brauchte man iso646.h, in c++ sind es Schlüsselwörter.

    Durchlesen!

    Keiner der von dir geposteten Links behauptet das or etc. ein Schlüsselwort ist, ganz im Gegenteil, es steht dort nicht in der Schlüsselwörter Tabelle, sondern unter "Alternativ Schreibweisen" bzw "Reserved Words". Ich für meinen Teil habe bisher weder das eine noch das andere behauptet, sondern ledigtlich nachgefragt woher dir or als Operator bekannt ist.

    Entyl_Sa schrieb:

    Das sind Makros, die bekommt der Compiler überhaupt nicht zu lesen.

    Hier gebe ich auch ledigtlich, mit Komentar, wieder was unter deinen ersten Links auch steht.

    The macro yields the operator &&.

    Wenn ich dir irgendwo zu nahe getreten bin so tut es mir leid, ich wollte nur mein Wissen erweitern und dich keinesfalls irgendwie anmachen.

    Gruß
    Entyl Sa



  • Also ich wollt hier keine Auseinandersetzung hervorrufen.
    Ist doch nur eine Kleinigkeit, nicht der des streites wert.

    Machen wir es kurz:

    Kann mir einer folgendes Bsp Programmieren:

    Ansistring1 = Edit1->Text;
    Ansistring2 = Edit2->Text;

    Wenn die beiden gleich sind und der erste String zusätzlich == "0" ist, dann setzte Textfeld text auf "funzt".

    Ich glaube somit bekommen wir alle die gesuchte Antwort. Bitte auch mit den Includes und defines. Vielleicht fehlt bei mir da noch einer.

    Danke! 😉



  • Entyl_Sa schrieb:

    Keiner der von dir geposteten Links behauptet das or etc. ein Schlüsselwort ist, ganz im Gegenteil, es steht dort nicht in der Schlüsselwörter Tabelle, sondern unter "Alternativ Schreibweisen" bzw "Reserved Words". Ich für meinen Teil habe bisher weder das eine noch das andere behauptet, sondern ledigtlich nachgefragt woher dir or als Operator bekannt ist.

    Eine sogenanntes 'alternative token' ist bestandteil der Sprache. Wie könnte sonst folgendes legales C++ sein?

    int main()
    {
      int i = 1 xor 2;
    }
    

    es werden keine Header eingebunden - woher nimmt der Compiler also xor?



  • Shade Of Mine schrieb:

    int main()
    {
      int i = 1 xor 2;
    }
    

    es werden keine Header eingebunden - woher nimmt der Compiler also xor?

    Und hier genau lag mein Problem. Mein VC++ 6.0 hat das so nämlich nicht geschluckt. 😡
    Habe dann extra mal wieder Linux gestartet und sihe da, sogar mein Editor erkennt es.
    Habe mich dann sogar daran erinnert das ich letztes Semester ein paar Variablen habe anders benennen müßen. 💡
    Naja, wohl selbst schuld wenn ich mich von Windows nicht lösen kann.



  • Deswegen teste ich solche Sachen immer erst mit dem Comeau Compiler - wenn der es schluckt kann ich mir ziemlich sicher sein, dass es legal ist.



  • Hallo,

    wenn man mit VC++ 6 die besagten Schlüsselwörter verwenden will, dann muß man den Header <iso646.h> einbinden, in dem diese Schlüsselwörter als Makros definiert sind, und kann dann, wenn's denn sein muß, damit arbeiten.

    MfG


Anmelden zum Antworten