komiches new Verhalten



  • Hallo

    Ich habe:

    Char * Key
    
        int size = ExtKey.Length()-1; // ExtKey ist AnsiString
    
        Key = new (char[size]);    // Dynamische Char Var im Heap
    
        for (int i=0 ; i <= size ; i++)
          {                       // Werte werden kopiert.
          Key[i] = ExtKey[i+1];   // Key -1, da Char bei 0 anfägt, AnsiString bei 1!
          }
    

    so, das sollte meiner meinung nach gehen. tut es aber nicht.
    Was passiert, ist das bei bestimmten size werten relgelmäßig alles toll klappt, wohingegen bei anderen immer komische zeichen in Key stehen.

    z.b.:
    size = 5:
    Key = "Hallo"
    steht dann auch im Degugger Key="Hallo"

    bei:
    size = 4
    Key = "Wert"
    hingegen steht im Degugger Key = "Wert0x\10"

    das verhält sich bei allenmöglich Zahlen immer unterschiedlich, aber immer mal richtig und mal falsch.
    Hat jemand einen PLan?`

    Danke"



  • Denk drann das Du das NULL Zeichen selbst setzen musst im Key der Debugger zeigt alles an bis er ein \0 trifft.

    (als eine Möglichkeit)



  • int size = ExtKey.Length(); // ohne -1 wegen \0 am ende
        char *Key = new (char[size]);
    
        for (int i=0 ; i < size ; i++) //jetzt auch < size
          {                       // Werte werden kopiert.
          Key[i] = ExtKey[i+1];   // Key -1, da Char bei 0 anfägt, AnsiString bei 1!
          }
    

    [/QB][/QUOTE]
    allerdings kann das auch blödsinn sein, weil ich AnsiString nicht so besonders toll kenne (gehört auch nicht zu Standard C++)
    wenn das nicht geht, frag mal im C++ Builder Forum nach, oder besser warte bis der thread verschoben wird



  • Original erstellt von Knuddlbaer:
    **Denk drann das Du das NULL Zeichen selbst setzen musst im Key der Debugger zeigt alles an bis er ein \0 trifft.

    (als eine Möglichkeit)**

    NULL ist aber nur für pointer gedacht, ok unter c++ ist es 0 aber unter c war es ein ((void*)0)
    naja usw.


Anmelden zum Antworten