VCL - Konsole - String/Char Konflikt



  • Hi!

    ich habe folgenden Code:

    int main(int argc, char* argv[])
    {
      String a = String(char(255)) + String(char(250)) + String(char(128));
      //String a = String(char(255) + char(250) + char(128)); //Ergibt totalen Mist!
    
      for (int i=1; i<=a.Length(); i++)
        puts(IntToStr(a[i]).c_str());
    
      for (;;);
      return 0;
    }
    

    Warum kommt bei der Ausgabe in diesem Code folgendes?

    -1
    -6
    -128
    

    Wie kann man das korrigieren OHNE die String wegfallen lassen zu müssen (also alles mit chars)?

    Danke im voraus
    Eich



  • AnsiString('a') == AnsiString("a")



  • Du arbeitest mit CHARS!!!

    -128 .. +127, das ist also normal!!! Du must richtige Typen nehmen / anpasse!
    mach:

    for (int i=1; i<=a.Length(); i++)
        {
          unsigned  char z;
          z=(a[i]);
          AS=IntToStr(z);
          puts(IntToStr(z).c_str());
        }
    

    Dann sollte das gehen 😉



  • @Der Altenburger: Ich glaube, du hast da was nicht ganz verstanden.



  • Das denk ich nicht!



  • Na, dann werd ich dir wohl mal was erklären müssen.

    String a = String(char(255)) + String(char(250)) + String(char(128));
    

    Danach ist a == "ÿú€". Und jetzt überleg dir mal, was IntToStr(a[1]) ausgibt...



  • OK, hab grad gemerkt, dass ich nicht verstanden habe, was ProfEich machen will.

    @ProfEich: Es wäre sinnvoll, wenn du das in Zukunft angibst.



  • Original erstellt von WebFritzi:
    **```cpp
    String a = String(char(255)) + String(char(250)) + String(char(128));

    
      
    Danach ist a == "ÿú€". Und jetzt überleg dir mal, was IntToStr(a[1]) ausgibt...**
    

    Eben, in a sind die Zeichen der drei ASCII- Codes hintereinander als Text! 😉

    Und er will die Code- Werte (so wie er sie eingegeben hat!) als Text jeweils ausgeben!

    Der String dient als char- Array fuer Zahlenwerte (0..255)!

    Und IntToStr betrachtet die Char- Werte als signed! 😉

    Ups, zu langsam! 😃

    [ Dieser Beitrag wurde am 05.04.2003 um 20:58 Uhr von DerAltenburger editiert. ]


Anmelden zum Antworten