StringCbCopyN



  • Ich versuche grade verzweifel einen String in einen LPSTR zu kopieren. Dabei möchte in den ersten Teil eines Pfades aufbauen und den zweiten teil(dateinamen) später anfügen. soweit komme ich jedoch nicht, wie ich das im debug sehe, gibt es ein problem bei umkopieren der inhalte innerhalb der routine. der zielpointer ist wohl das problem(pcbuffer), allerdings verstehe ich nicht ganz wieso:

    int _tmain(int argc, _TCHAR* argv[])
    {

    LPTSTR pcBuffer = NULL;
    int len = sizeof(L"C:\\temp\\test\");

    StringCbCopyN(pcBuffer, MAX_PATH, L"C:\\temp\\test\", len);

    return 0;
    }



  • Ich weiß zwar nicht, woher du diese Funktion hast, aber üblicherweise erwarten derartige Funktionen, daß du vorher genügend Speicher reservierst:

    int len = sizeof(L"C:\\temp\\test\\");
    LPTSTR = new TCHAR[len];
    StringCbCopyN(pcBuffer, MAX_PATH, L"C:\\temp\\test\\", len);
    


  • danke 🙄

    Aber jetzt hab ich ein Problem mit dem sizeof Operator und wchar_t, er ermittelt mir die falsche Länge.

    die variable Path ist vom typ wchar_t* mit max. 256Byte Speicher allociert und hat
    den Inhalt
    http://i105.photobucket.com/albums/m239/souljumper/test.jpg

    ich möchte da jetzt wissen wieviele zeichen dort enthalten sind.

    int len = sizeof(Path) / sizeof(wchar_t);
    

    Seltsamerweise spuckt er mir jetzt aus, das len den Wert 2 hat. wieso das? diese ganze strings, chars und dazu das unicode macht einen ganz confuse :xmas2:



  • sizeof(Path) ist immer 4.



  • ich möchte da jetzt wissen wieviele zeichen dort enthalten sind.

    lstrlen(Path)
    

Anmelden zum Antworten