TCHARS...



  • for(int k = 1; k<=lstrlen(buf1); k++)
    {
    	if(buf1[k] == (TCHAR)TEXT("\n")) 
    .......
    

    richtig? oder eher nicht so ganz?



  • LOL! Richtig...In Bezug auf ... ?

    Also wenn du den gesamten Buffer 'bufl' auf NewLine-Zeichen ('\n') prüfen willst, ist Dein Code falsch. Dann muss er so aussehen:

    for(int k = 0; k < lstrlen(buf1); k++)
    {
        if(buf1[k] == '\n')
        {
           // An Position k befindet sich ein NewLine Zeichen:
           // ...
        }
    
        // ...
    }
    

    Wenn Du UNICODE-Unabhängigkeit erreichen willst, geht das (beispielsweise) so:

    #ifdef UNICODE
      #define SIGN(c) L#c
    #else
      #define SIGN(c) c
    #endif // UNICODE
    
    for(int k = 0; k < lstrlen(buf1); k++)
    {
        if(buf1[k] == SIGN('\n'))
        {
           // An Position k befindet sich ein NewLine Zeichen:
           // ...
        }
    
        // ...
    }
    

    Oder so (ist Ansichtssache, mir gefällt die voherige Version besser 😉 ):

    for(int k = 0; k < lstrlen(buf1); k++)
    {
    #ifdef UNICODE
        if(buf1[k] == L'\n')
    #else
        if(buf1[k] == '\n')
    #endif // UNICODE
        {
           // An Position k befindet sich ein NewLine Zeichen:
           // ...
        }
    
        // ...
    }
    


  • hättest auch einfach schreiben können, dass ich die " durch ' ersetzen soll. 😛

    jetzt versteh ich auch, wieso er meinte, dass TEXT("\n") ein integer ist und ich ein (TCHAR) davor setzen musste (obwohl das iwie schwachsinnig ist) - eine zeichenkette ist ja nur die adresse auf die zeichenkette^^ ...

    #ifdef UNICODE
    #define SIGN(c) L#c
    #else
    #define SIGN(c) c
    #endif // UNICODE

    brauchen wir net, wofür gibbet denn TEXT()? :p

    Naja, mein Prog klappt trotzdem net richtig - soll den Text in nem Fenster analysieren und die größe des Fensters dadran anpassen, ist aber iwie zu klein.

    Hier die WM_CREATE

    case WM_CREATE:
    hdc= GetDC(hWnd);
    GetTextMetrics(hdc, &tm);
    cxChar = tm.tmAveCharWidth;
    cyChar = tm.tmHeight + tm.tmExternalLeading;
    GetWindowRect(hWnd,&rect);
    if (!lol)
    {
    Quadrate(1,80, 3);
    lol = true;
    }
    for(int i = 1; i <=lstrlen(buf1); i++)
    {
    if(buf1[i] == TEXT('\n'))
    cendl++;
    if(buf1[i] == TEXT('\0'))
    {
    for(int k = 1; k<=lstrlen(buf1); k++)
    {
    if(buf1[k] == TEXT('\n'))
    ctendl++;
    if(ctendl == (cendl-1))
    {
    wsprintf(buf2,TEXT("\0"));
    for(k; k<=lstrlen(buf1); k++)
    {

    lstrcat(buf2, &buf1[k]);
    }
    }
    }
    }
    }
    cwl = lstrlen(buf2) * 2;
    MoveWindow(hWnd,rect.left, rect.top, cwl*cxChar, cendl*cyChar,TRUE);
    ReleaseDC(hWnd, hdc);
    return 0;



  • Wieso so umständlich? Er kann genauso gut einfach

    if(buf1[k] == TEXT('\n'))
    

    schreiben. :p

    edit:
    ich sollte doch öfter mal auf "neu laden" klicken. 🙂



  • Ich nehme die beiden Markos zur Unterscheidung... dann sieht man so man einzelne Char's bzw vollständige C-String' verwendet...ist übersichtlicher, aber klar, man kann auch einfach TEXT nehmen 😉 .

    EDIT: Wobei man natürlich auch einfach schreiben kann:

    #define SIGN(c) TEXT(c)
    

    😃



  • vielen dank nochmal an alle, hab das irgendwie hingekriegt mit der berechnung, auch wenns krumm ist xD


Anmelden zum Antworten