String manipulieren



  • ich habe einen String der so aussieht: "VOL 000,0000 LTR". Nun möchte ich, dass nur der numerische Wert genomen wird also 0,0. Diesen String bekomme ich von einem Gerät, dass ich per RS232 angesprochen habe. Wie kann ich das machen?

    Edit: ich seh grad, ich hab das alles in einer Funktion und gebe einen String zurück:

    AnsiString c_Rzr2102::Datenaustausch(unsigned char p_steuerzeichen)
    {
    	char rec[50];
       while(m_port.ReceiveData(rec, 1) >0); //Buffer leeren
       unsigned char send[] = {p_steuerzeichen};
       m_port.SendData(send, 1);
        int count = m_port.ReceiveData(rec, 50);
       return AnsiString(rec).SubString(1,count-2).Trim();
    }
    

    Dann nehm ich lieber das rec-Feld, manipuliere es und wandel es in double. Die Funktion soll trotzdem weiter einen AnsiString zurückgeben.



  • Du kennst doch schon von AnsiString Pos und SubString.

    Woran scheidert es, diese so einzusetzten damit du das Zwischenstück des Strings herausbekommst ?



  • habs mit SubString gemacht, das geht auch. Nun muss ich feststellen, dass es doch besser ist gleich ein double zurückzugeben. Habs jetzt so:

    double c_Edu32fp::ErfasseVolumen()
    {
    	char rec[50] = {0};
       unsigned char send[] = {0x16};
       while(m_port.ReceiveData(rec,1)>0); //Buffer leeren
       m_port.SendData(send,1);
       m_port.ReceiveData(rec,50);
       return StrToFloat(String(rec).SubString(4,9).Trim());
    }
    

    Ausgabe war vorher VOL 000,0000 LTR.
    Der Code im ersten Beitrag war für einen anderen String.
    Kann man das vielleicht besser lösen als den Zwischenschritt über den String?


Anmelden zum Antworten