Ascii an char * übergeben



  • hallo. eine funktion hat diesen parameter:

    char *str
    

    ich will einen ascii-wert übergeben. hab alles mögliche an definitionen probiert, geht aber nicht.

    wie muss ich das aufrufen ?



  • Bitte etwas konkreter - was für einen Wert willst du übergeben?

    (normalerweise erwarten Funktionen hinter einem char* einen nullterminierten Zeichenstring - d.h. ein char-Array, dessen Ende durch ein '\0' gekennzeichnet ist)



  • ich will den ascii-wert 225 übergeben.

    geht um ein code-beispiel hier aus dem forum. dir funktion, die ich aufrufe ist diese:

    void pfeil_text(char *str,int X, int Y, double Angle)
    

    ich habe mir zu einer schriftart ein symbol ausgesucht, dass den ascii-code 225 hat. das will ich jetzt übergeben.



  • Im Zweifelsfall füllst du den Text in ein char-Array und übergibst das:

    char symbol[] = { 255 , 0 };//oder auch "\xFF"
    pfeil_text(symbol,xpos,ypos,dir);
    


  • klasse. danke.

    weiß nicht ob dies ein neuer thread werden sollte. ab einem gewissen grad wird kein text mehr angezeigt. Jansen antwortete:
    "Stell dir den schrägen Text als Diagonale des zu übergebenden Rects vor.
    Entsprechend gross muss letzteres definiert werden (mindestens)."

    ich bekomm das nur hin, wenn ich bei z. B. bei 90°:

    frmMain->Canvas->TextRect(R, X, Y+15, str);
    

    +15 mache.

    void pfeil_text(char *str,int X, int Y, double Angle)
    {
    frmMain->Canvas->Brush->Color=clWhite;
    
    int fontweight;
    DWORD fontitalic, fontunderline, fontstrikeout;
    // create font with specified angle
    // bold?
    if(frmMain->Canvas->Font->Style.Contains(fsBold))
            fontweight = FW_BOLD;
    else
            fontweight = FW_NORMAL;
    // italic?
    if(frmMain->Canvas->Font->Style.Contains(fsItalic))
            fontitalic = true;
    else
            fontitalic = false;
    // underline?
    if(frmMain->Canvas->Font->Style.Contains(fsUnderline))
            fontunderline = true;
    else
            fontunderline = false;
    // strike out?
    if(frmMain->Canvas->Font->Style.Contains(fsStrikeOut))
            fontstrikeout = true;
    else
            fontstrikeout = false;
    HFONT hFont = CreateFont(frmMain->Canvas->Font->Height, 0, Angle*10, Angle*10, fontweight,
                    fontitalic, fontunderline, fontstrikeout, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,
                    CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE,
                    frmMain->Canvas->Font->Name.c_str());
    // assign created font to canvas
    SelectObject(frmMain->Canvas->Handle, hFont);
    // create Rectangle
    TRect R(X,Y,X+frmMain->Canvas->TextWidth(str),Y+frmMain->Canvas->TextHeight(str));
    // draw text on canvas
    frmMain->Canvas->TextRect(R, X, Y, str);
    // free font
    DeleteObject(hFont);
    }
    


  • so krieg ich es hin. kann aber eigentlich nicht sinn sein?

    TRect R(X,Y,X+140,Y+140);
    // draw text on canvas
       if (Angle >= 180)
       {
          X += 50;
          Y += 30;
       }
       else if (Angle >= 145)
       {
          X += 15;
          Y += 30;
       }
       else if (Angle >= 115)
       {
          X += 10;
          Y += StrToInt(frmMain->Edit1->Text);
       }
       else
          {
             Y += StrToInt(frmMain->Edit1->Text);
          }
    
    frmMain->Canvas->TextRect(R, X, Y, str);
    

Anmelden zum Antworten