String auf Whitespacezeichenfolge untersuchen



  • So weit, so gut, nur welchen Parameter gebe ich Pos an? Habe da einiges ausprobiert, aber bisher hat der nix erkannt...



  • Aus der Hilfe:

    int Pos (const AnsiString & subStr);

    Pos gibt den Index des Zeichens im AnsiString zurück, mit dem der Teilstring subStr beginnt, wobei 1 der Index des ersten Zeichens ist, 2 der Index des zweiten Zeichens usw. Ist der Teilstring subStr nicht im AnsiString enthalten, gibt Pos 0 zurück.



  • Das ist mir klar, aber wie bekomme ich den bubstring mit meinen beiden Whitespacezeichen???



  • Hallo

    AnsiString text = "Test\r\nNeu";
    int pos = text.Pos("\r\n");
    

    bis bald
    akari



  • Und genau das funktioniert nicht, weil dann auf Zeichenfolge "\r\n" untersucht wird, ich aber auf '\r''\n' untersuchen möchte.
    Folgendes funktioniert:

    char CrLf[2] = {13, 10};
    text.Pos(CrLf)...
    

    Wie ich eben raus bekommen hab. Aber geht das nicht auch ohne die zusätzliche Variable?



  • Hallo

    weil dann auf Zeichenfolge "\r\n" untersucht wird, ich aber auf '\r''\n' untersuchen möchte.

    Und was ist deiner Meinung nach der Untershcied zwischen "\r\n" und '\r''\n'?

    Mein Codeausschnitt ist jeenfalls genau das was du suchst, probier den doch einfach mal aus.

    bis bald
    akari



  • Der Unterschied ist, dass "\r\n" 4 ASCII-Zeichen sind und '\r' '\n' 2 ASCII-Zeichen. Dein Beispiel funktioniert nur, weil du es genauso eingegeben hast. Ich bekomme aber meine Zeichen über die serielle Schnittstelle, da ist ein Zeichen auch nur ein Zeichen.



  • heimchen schrieb:

    Der Unterschied ist, dass "\r\n" 4 ASCII-Zeichen sind und '\r' '\n' 2 ASCII-Zeichen.

    quatsch. wenn man mal von der 0 am ende von "\r\n" absieht (was aber für so'ne suchfunktion wie 'pos' egal ist) sind beides 2 zeichen.



  • Hallo

    dass "\r\n" 4 ASCII-Zeichen sind

    Schwachsinn.
    Bitte probier doch einfach mal diese Quellcodezeile aus und staune.

    Label1->Caption = AnsiString("\r\n").Length();
    

    Ich bekomme aber meine Zeichen über die serielle Schnittstelle, da ist ein Zeichen auch nur ein Zeichen.

    Bitte belies dich doch erstmal über Escapesequenzen.

    bis bald
    akari



  • heimchen schrieb:

    Der Unterschied ist, dass "\r\n" 4 ASCII-Zeichen sind und '\r' '\n' 2 ASCII-Zeichen. Dein Beispiel funktioniert nur, weil du es genauso eingegeben hast. Ich bekomme aber meine Zeichen über die serielle Schnittstelle, da ist ein Zeichen auch nur ein Zeichen.

    du meinst sicher bytes, denn die kriegst du über die serielle.
    Aber "\r\n" und '\r''\n'sind (fast) gleich(macht aber keinen unterschied)
    1. 0x0A0D
    2. 0x0A 0x0D

    wenn du es in ein binärfile schreiben willst steht es sowiso als 0D 0A oder 0A 0D da

    corvin



  • Seit wann sind

    Der Unterschied ist, dass "\r\n" 4 ASCII-Zeichen

    das 4 Zeichen??Kann nur 2 erkennen

    Schon mal mit Escapesequenzen befasst?



  • Ok ok, der Fehler lag in einem anderen Programmabschnitt, e 🤡 s sind nur 2 Zeichen!


Anmelden zum Antworten