Array Fragmente ausgeben



  • Ich bekomme aber nach jedem Datenempfang
    über die Serielle Schnittstelle
    zwei || präsentiert (also nach dem UpdateData(false).
    Dies möchte ich nicht angezeigt bekommen.

    Schicke ich zum Beispiel ein Hello World,
    würde ich Hello World || sehen.
    Nun könnte ich ja noch etliche Leerzeichen zu meiner Anwendung schicken ,
    (um die beiden Striche aus dem sichtbaren bBereich zu schieben)
    aber gibts da nicht auch noch ne andere Möglichkeit,
    zum Beispiel nur bestimmte "Teile" meines Arrays anzuzeigen?

    So kann ich ja die Adresse angeben wo angefangen werden soll:
    m_anzeige = &abBuffer[0];

    aber wie drücke ich aus das ich nur bis zu einem bestimmten Array Feld
    anzeigen möchte?
    Mir fällt zwar sofort eine Schleife ein, aber da fehlt mir noch irgendwas
    ...hmm 😕

    Würd mich freuen , wenn mir jemand helfen kann

    Gruß
    Sven



  • Schau dir doch mal an, was CString alles kann.
    Da gibt es z.B. Right oder auch Replace.



  • Hallo,

    ja ich habs mir angeguckt, aber ich hab noch irgendwo einen Wurm drin :

    Also:

    CString str;
    CString m_anzeige; // (Dialogfeld gebunden)

    str = &abBuffer[0]; // mein Speicher wird hier ab Adresse 1 "ausgelesen"
    AfxMessageBox(str);//ich überprüfe den Inhalt ->Ergebnis OK

    /***********************************************************************
    //Nun möchte ich den String "beschneiden" und anzeigen
    //Die Variable m_anzeige ist an ein Anzeigefeld gebunden
    /***********************************************************************

    str.Left(5) = m_anzeige;

    Tja im letzteren Teil liegt wohl der Fehler ,
    wie ist die korrekte Syntax, kann mir da bitte jemand helfen?

    Gruß
    Sven



  • str.Left(5) = m_anzeige;
    

    Das musst du umdrehen. 😃

    m_anzeige = str.Left(5);
    

    Und: Gewöhn dir bitte Code-Tags an. 🙂



  • Das char - Array wird nur bis zu einem Element mit dem Wert 0 ausgegeben. Setze einfach nach dem letzten auszugebenen char den Wert 0

    char ttt[8];
    ttt[0]='p';
    ttt[1]=0;
    cout << ttt;
    

    Ausgabe:

    p



  • Danke ,die Antwort vom Moderator war genau richtig für mich.
    Nun funktioniert alles.

    Vielen Dank



  • Wenn das von der seriellen Schnittstelle kommt, dann werden das in aller Wahrscheinlichkeit die beiden Zeichen <CR> und <LF> sein, die dann in einem CString als || erscheinen. Warum schneidest Du nicht immer die letzten beiden Zeichen des Strings ab? Oder Du liest zeichenweise in ein Char-Array bis eines dieser Zeichen kommt (Abbruchbedingung)? Alles andere ist nicht unbedingt zu empfehlen....


Anmelden zum Antworten