Umlaute: Erhalte negativen Wert [done]



  • Hallo,
    ein Programm von mir schnappt sich den ASCII Wert eines char und arbeitet dann mit diesem.
    Jetzt bin ich auf folgendes Problem gestoßen:

    // Beispiel zur Veranschaulichung
    
      AnsiString str1 = "ABCÄÖÜ";  // Benutzereingabe
      char c1 = str1[2],
           c2 = str1[4];
    
      int i1 = c1,
          i2 = c2;
    
      char c3 = i1,
           c4 = i2;
    

    Der Benutzer gibt den String str1 ein.
    Sowie ein Umlaut darin vorkommt und ich den integer davon ahben will bekomme ich einen negativen Wert. Mit diesem kann ich aber nicht rechnen. Sollte ja eigentlich positiv sein!
    Wandele ich den negativen integer wieder in ein char zurück erhalte ich allerdings den gewünschten Umlaut. Was ist denn hier los?
    Kann mir das jemand erklären?



  • Und nocheinmal die Frage

    Warum arbeitest du mit gemischten Zeichenketten-Typen. Nimm String (AnsiString) und gut.

    Des Weiteren schau in der Hilfe unter

    sigend
    unsigned

    nach. Das könnte eine Hilfe sein



  • Hallo

    unsigned char cx = str1[4];
      int ix = cx;
    

    bis bald
    akari



  • Horschdware schrieb:

    Sollte ja eigentlich positiv sein!

    wieso sollte der positiv sein? der wertebereich von char ist -128 <= X <= 127, es gibt aber 256 ASCII-Zeichen (0 <= X <= 255).



  • ah, ok
    alles klar.
    bins von meinen delphi chars gewohnt dass die positiv sind.

    merci
    problem gelöst


Anmelden zum Antworten