mikrocontroller.net

Forum: PC-Programmierung c++ string splitten und ausgeben


Autor: Michael R. (michir)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum,

da mir hier schon oft geholfen wurde wenn ich mich mal wieder an euch :)

Ich hab ein kleines Problem in c++ (Borland c builder)

Mir liegt ein String vor in der Form von z.b. "01X01......"

Die Punkte erscheinen in dem richtigen String als ne kombination aus 
zahlen die mir von nem Messumformer gesendet werden... z.b ne Temperatur 
oder so...

Nun möchte ich gern den empfangenen String auf die Kombination 01X01 
überprüfen. Wenn in dem String in den letzten 5 positionen das 01X01 
steht soll mir der rest von dem String in nem Label angezeigt werden.

Nun kam ich da in der Hilfe vom Borland auf die Funktion SubString (int 
Index, int count)...

klingt alles ganz logisch nur komm ich da mit irgendwie nich klar... die 
Funktion splittet also den String vom Anfang (index) bis zum gewählten 
Punkt (count)

testweise sieht das bei mir so aus:

String Test="01X010000022.5";

if(Test.SubString(Test.Length()-5,Test.Length())=="01X01")
 {
  lblTemp->Caption=Test.SubString(0,Test.Length()-5);
 }
 else
 {
  lblTemp->Caption="";
 }

das label zeigt mir halt nur nich das an was es machen soll :)

Wo liegt mein Denkfehler?

Danke schonmal für eure Hilfe

Lg

Autor: Jean Player (fubu1000)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

> Nun möchte ich gern den empfangenen String auf die Kombination 01X01
> überprüfen. Wenn in dem String in den letzten 5 positionen das 01X01
> steht soll mir der rest von dem String in nem Label angezeigt werden.
>
> Nun kam ich da in der Hilfe vom Borland auf die Funktion SubString (int
> Index, int count)...
>
> klingt alles ganz logisch nur komm ich da mit irgendwie nich klar... die
> Funktion splittet also den String vom Anfang (index) bis zum gewählten
> Punkt (count)
>
> testweise sieht das bei mir so aus:
>
> String Test="01X010000022.5";

Hmmm. Oben sagste in den letzten 5 Stellen soll dein 01x01 stehen und 
weiter unten sieht es eher für mich so aus als würdest du sie in den 
ersten fünf Stellen erwarten ?


> if(Test.SubString(Test.Length()-5,Test.Length())=="01X01")

Du prüfst über die Länge des Strings Test.
Die SubString Funktion erwartet von Dir int index und int count. Also 
Anfangswert im String und Anzahl der Zeichen.
---> if(Test.SubString(Test.Length()-5 , 5) == "01X01")
könnte klappen.
Aber für mich sieht es eher so aus als würden diese Zeichen am Anfang 
stehen, also --> if(Test.SubString(0 , 5) == "01X01")

Gruß

Autor: MichiR (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mh stimmt auch irgendwie... hatte mich bissl an die binäre zählweise 
gehalten... da fängt man ja auch rechts mit 2^0 an... also müsste ich 
dann das ganze eher von linkjs anfangen... ich teste das mal :)

lg

Autor: Arc Net (arc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jean Player schrieb:
>> if(Test.SubString(Test.Length()-5,Test.Length())=="01X01")
>
> Du prüfst über die Länge des Strings Test.
> Die SubString Funktion erwartet von Dir int index und int count. Also
> Anfangswert im String und Anzahl der Zeichen.
> ---> if(Test.SubString(Test.Length()-5 , 5) == "01X01")
> könnte klappen.
> Aber für mich sieht es eher so aus als würden diese Zeichen am Anfang
> stehen, also --> if(Test.SubString(0 , 5) == "01X01")
>
> Gruß

Vorsicht! Die VCL-Strings (AnsiString, WideString) sind nicht 
null-basiert d.h. die ersten fünf Zeichen erhält man mit 
str.SubString(1, 5)

Autor: MichiR (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wunderbar...

Hat alles geklappt :) Bedanke mich vielmals!

lg

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.