unsigned int zu char casten und dann an einen CString anhängen



  • Hallo!

    Ich möchte das mein IDC_STATIC_CURRENT_ENTRY immer ausgibt bei welchem Eintrag von einer Liste man sich gerade befindet, ungefähr so:

    Liste 1, Eintrag 4 / 20:

    Aber ich bekomme es nicht hin:

    unsigned int pos = 0;
    
    char buffer[200];
    sprintf(buffer, "%i", pos);
    
    char buffer1[200];
    sprintf(buffer, "%i", Liste.Size());
    
    CString info = "Liste 1, Eintrag ";
    
    info.Append(buffer);
    info.Append(" / ");
    info.Append(buffer1);
    info.Append(" : ");
    
    SetDlgItemText(IDC_STATIC_CURRENT_ENTRY, info);
    

    ergibt:

    "Liste 1, Eintrag 1 / 'Eckiger Kasten' :"

    Er fängt also nicht bei 0 an und rechts ist auch nicht die Größer der Liste sonder das Sonderzeichen "Kasten".
    Brauche Hilfe 😞



  • problem gelöst, hatte zweimal "buffer" verwendet 🙄



  • Eigentlich nicht gelöst.
    Wofür verwendest du sprintf?

    Wenn du MFC und da auch noch die CString_Klasse verwendest dann mach dies auch.

    CString info("");
    info.Format("Liste 1, Eintrag %i / %i:",pos,Liste.Size());
    SetDlgItemText(IDC_STATIC_CURRENT_ENTRY, info);
    


  • Oh, danke. Deine Lösung ist wesentlich eleganter, obwohl meine aber auch funktioniert hat. 👍



  • oder so:

    /******************************************************************************/
    /*                                                                            */
    /* CFormatierung::Int_in_CString                                							*/
    /*                                                                            */
    /*----------------------------------------------------------------------------*/
    /* Eingang: Int-Variable, welche in einen CString konvertiert werden soll     */
    /* Ausgang: CString, Uebergabe-Int als CString geschrieben                    */
    /*----------------------------------------------------------------------------*/
    /* Konvertiert einen Int in ein CString Objekt.                               */
    /******************************************************************************/
    CString CFormatierung::Int_in_CString(int IntVar)
    {
      CString strStringVar;
      char buffer[20];
      _itoa( IntVar, buffer, 10);
      strStringVar.Empty();
      strStringVar.Insert(0, buffer);
    
      return strStringVar;
    }
    

    Esco 🙂



  • Esco schrieb:

    oder so:

    /******************************************************************************/
    /*                                                                            */
    /* CFormatierung::Int_in_CString                                			
    
    				*/
    
    // U,S,W.
    

    Esco 🙂

    Na klar!!!!!!!! 👎



  • Unix-Tom schrieb:

    Esco schrieb:

    oder so:

    /******************************************************************************/
    /*                                                                            */
    /* CFormatierung::Int_in_CString                                			
    
    				*/
    
    // U,S,W.
    

    Esco 🙂

    Na klar!!!!!!!! 👎

    sorry kollege. anscheinend bin ich nicht mit den dir gegebenen programmierkenntnissen gesegnet worden. eventuell kannst du ja deine etwas kurz gefasste 'aussage' etwas praezisieren, damit wir hier im forum alle was davon haben.

    gruesse Esco

    dass die obige operation keine formatierung im eigentlichen sinne ist, ist mir bekannt. etwaige andere stilverbrechen kann der fachkundige programmierer ja selbst beseitigen 🙂



  • CString strStringVar;
    char buffer[20];     // Wozu Speicher verwenden wenn man es nicht braucht
      _itoa( IntVar, buffer, 10);  //Man kann zwar in C++ C verwenden aber wozu
      strStringVar.Empty();   // Wozu was leeren wenn es eh bereits leer ist
    

    Aauf alle diese Dinge war mein Posting aber nicht ausgerichtet.
    Warum sollte Herrje und andere eine Funktion verwenden wenn es mit einer Codezeile getan ist.
    Deine Funktion ist sicher nicht schneller als Format von CString.
    Insbesondere weil Herrje auch noch andere Strings drin haben wollte.
    Ess soll auch Anfänger geben die dann statt MFC wirklich die Funktion nehmen und sich somit nichts gutes tun.

    Und wenn dann schon so:

    CString CFormatierung::Int_in_CString(int IntVar)
    {
    CString strStringVar("");
    strStringVar.Format("%i",IntVar);
    return strStringVar;
    }
    

    Wobei man hier bereits mit Templates ansetzen kann.


Anmelden zum Antworten