Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: Zahl aus Bildfenstertitel auslesen

  1. #1
    Registriert seit
    23.08.2004
    Beiträge
    565
    Danke
    73
    Erhielt 19 Danke für 18 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen.. Ich steh mal wieder vor einem Problem.

    Ich möchte eine Art "Stellung" Nachfüren im Leitsystem einbauen.
    Dazu öffne ich ein Bildfenster wo ich dann die Stellung Auf / Zu oder Ein / Aus des jeweiligen Objekts nachführen will..

    Nun möchte ich aber dies nicht über den TagPrefix machen, da ich sonst für jedes Objekt eine Variable verwenden muß. Vielmehr möchte ich den Captiontext des Bildfenster setzen beim Bildaufruf und diesen dann wieder auslesen.

    Problem ist wiederum nur das ich nicht nur die Nummer des Objekts in dieser Bildfensterüberschrift habe sondern noch eine Beschreibung des Objekts z.b. Schieber 213 oder Pumpe 12

    mit der atoi funktion funktioniert es in sofern wenn ich nur die Nummer des Objekts in die Bildüberschrift setze.

    Kennt jemand eine lösung mit der ich diese Zahl aus dem ganzen Char extrahieren kann?
    Zitieren Zitieren Zahl aus Bildfenstertitel auslesen  

  2. #2
    Registriert seit
    28.10.2005
    Ort
    Ottweiler, Saar
    Beiträge
    940
    Danke
    259
    Erhielt 124 Danke für 109 Beiträge

    Standard

    Du könntest alle Zeichen überspringen, die keine Ziffern sind,
    und dann erst atoi aufrufen:

    Code:
    char* skip_noint (char* str) { 
       while ((str*) &&  !isint(str*) ) str++;
       return str;
    }
    res=atoi(skip_int(zeile));

  3. #3
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Code:
    char* skip_noint (char* str) { 
       while ((*str) &&  !isdigit(*str) ) str++;
       return str;
    }
    res=atoi(skip_int(zeile));
    Es ist doch C, oder?

  4. #4
    Registriert seit
    28.10.2005
    Ort
    Ottweiler, Saar
    Beiträge
    940
    Danke
    259
    Erhielt 124 Danke für 109 Beiträge

    Standard

    Ja, genau wie atoi auch.
    Eventuelle Fehler bitte ich wegen dem heutigen Schlippswegtag zu entschuldigen...

  5. #5
    Bender25 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    23.08.2004
    Beiträge
    565
    Danke
    73
    Erhielt 19 Danke für 18 Beiträge

    Standard

    Vielen Dank für deine Hilfe.. Leider komm ich noch nicht ganz damit klar..
    Könntest du vieleicht mal dazu schreiben was genau du machst? Bei mir kommen 5 fehler.

  6. #6
    Registriert seit
    28.10.2005
    Ort
    Ottweiler, Saar
    Beiträge
    940
    Danke
    259
    Erhielt 124 Danke für 109 Beiträge

    Standard

    Zitat Zitat von Bender25 Beitrag anzeigen
    Bei mir kommen 5 fehler.
    Und welche 5 sind das?

    BTW: der obige Code ist nichts fertiges, sondern nur als Handlungsanleitung gedacht...

  7. #7
    Bender25 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    23.08.2004
    Beiträge
    565
    Danke
    73
    Erhielt 19 Danke für 18 Beiträge

    Standard

    Zitat Zitat von argv_user Beitrag anzeigen
    Und welche 5 sind das?

    BTW: der obige Code ist nichts fertiges, sondern nur als Handlungsanleitung gedacht...

    Das dachte ich mir schon. Hab das ganze auch mal für meinen Fall angepasst. Aber geht nicht.. deswegen wollte ich mal genau wissen wass du in der Zeile
    char* skip_noint (char* str) {
    while ((*str) && !isdigit(*str) ) str++;
    return str;

    genau machst

  8. #8
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Zitat Zitat von Bender25 Beitrag anzeigen
    Das dachte ich mir schon. Hab das ganze auch mal für meinen Fall angepasst. Aber geht nicht.. deswegen wollte ich mal genau wissen wass du in der Zeile
    char* skip_noint (char* str) {
    while ((*str) && !isdigit(*str) ) str++;
    return str;

    genau machst
    Die Funktion skip_noint bekommt einen Zeiger str, der sollte auf einen String wie "abC1234\000" zeigen. Die \000 steht für die 0 die das Ende markiert.
    *str ist dasjenige Zeichen, auf das str zeigt (dessen Adresse in str gespeichert ist).
    Die while Schleife setzt den Zeiger eins weiter, also nacheinander auf 'a', 'b','C' und '1'. Das weitersetzen geschieht durch erhöhen von str um 1 in der Anweisung str++
    Sie tut das solange wie (*str!=0), das heißt das Ende ist noch nicht erreicht UND !isdigit(*str), das heißt (*str) ist keine Ziffer, wahr sind.
    Zeigt der Zeiger schließlich auf eine Ziffer (hier auf die 1) liefert die Funktion diesen Zeiger zurück, mit return str .

    Er zeigt nun auf die '1' in "abC1234\000" und wenn atoi ab dort auswertet, bekommt es nur "1234\000" zu sehen.

  9. Folgende 2 Benutzer sagen Danke zu Zottel für den nützlichen Beitrag:

    argv_user (01.02.2008),Bender25 (02.02.2008)

  10. #9
    Registriert seit
    28.10.2005
    Ort
    Ottweiler, Saar
    Beiträge
    940
    Danke
    259
    Erhielt 124 Danke für 109 Beiträge

    Standard

    Zu dem was Zottel gerade geschrieben hat, noch dieses:

    Mag sein, dass es isdigit nicht fertig gibt.
    Code:
    int isdigit (char c) {
      return ((c>='0') && (c<='9'));
    }
    ist eine Variante, die bei ASCII-Kodierung funktionieren sollte.

  11. Folgender Benutzer sagt Danke zu argv_user für den nützlichen Beitrag:

    Bender25 (02.02.2008)

  12. #10
    Bender25 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    23.08.2004
    Beiträge
    565
    Danke
    73
    Erhielt 19 Danke für 18 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    vielen dank euch beiden.. Werds Montag gleich mal testen...

Ähnliche Themen

  1. Negative Zahl richtig auslesen (AGLink)
    Von MikeJ im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 23.11.2010, 19:12
  2. Integer Zahl
    Von doretan im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 30.10.2008, 09:31
  3. REAL Zahl
    Von Stussi im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 04.05.2006, 18:37
  4. INT-Zahl in eine S5T#-Zahl umwandeln ?
    Von Stefan B. im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 02.03.2006, 22:40
  5. 5-stellige ascii zahl in normale zahl umwandeln
    Von Anonymous im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 04.01.2006, 16:12

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •