NetMessageBufferSend und der Buffer



  • Hallo!

    Folgendes Problem: Ich versende eine Message mit der NetMessageBufferSend

    AnsiString Message = Text->Lines->Text;
    NetMessageBufferSend(NULL, L"SERVER", L"USER", Message.c_str(), Message.Length());

    Es kommen nur Fragezeichen an, und ich kapiere nicht was da falsch ist.
    Für den buflen

    buflen
    The length, in bytes, of the message text in buf.

    habe ich glaube ich schon so gut wie alles probiert. Nun hoffe ich auf Erlösung

    Danke



  • Gast_Mark schrieb:

    Es kommen nur Fragezeichen an, und ich kapiere nicht was da falsch ist.

    Man könnte dir jetzt vorwerfen, du hättest die Dokumentation zu NetMessageBufferSend im Plattform SDK nicht gelesen. Aber da kommt das leider auch nur sehr schlecht raus:

    NET_API_STATUS NetMessageBufferSend(
      LPCWSTR servername,
      LPCWSTR msgname,
      LPCWSTR fromname,
      LPBYTE buf,
      DWORD buflen
    );
    

    ... grundsätzlich gilt für die Network MAnagement Functions, dass Unicode-Strings verwendet werden. (Erkennbar an LPCWSTR = Long Pointer Character Wide String) Das gilt sowohl für Namen als auch die NAchricht.



  • Doch die SDK lese ich, und verstehe sie auch (in diesem Fall), sonst hätte ich schwer mein Anfangszitat schreiben können! Gibst du mir recht?

    So böse dass nun klingt, aber ich riekiere die dicke Lippe, hoffe aber weiterhin auf Antworten 🙄
    Man könnte dir vorwerfen, dass du mein Posting nicht gelesen sondern überflogen hast, denn meine Frage bezieht sich auf die Nachricht (buf, und buflen). Diese muss nicht in Unicode sein:
    LPBYTE buf
    DWORD buflen

    LPBYTE dürfte durch "Message.c_str()" erfüllt sein.
    Der DWORD Wert könnte ansich auch ein unsigned int sein

    servername, msgname und fromname wandle ich bereits von AnsiString nach wchar_t *

    Dank für die Notation von LPCWSTR, war mir noch nicht bekannt!

    Nun hoffe ich dass du nicht gekrängt bist, und mir doch noch hilfst 🙂



  • Kränken kann man mich schwer... (o;

    Guest_Mark schrieb:

    LPBYTE dürfte durch "Message.c_str()" erfüllt sein.

    Nicht ganz. Die Idee ist zwar nicht schlecht, trifft aber nicht zu. Dann wäre es ein LPCHAR oder ein LPSTR... ists aber nicht.

    Weiss nicht mehr wo ich das überall gelesen habe, aber die Funktion existiert ausschliesslich in einer UNICODE Version. Das Einzige was hier LPBYTE aussagt ist, dass ein Byte-Puffer erwartet wird.



  • Danke fürs hartnäckig sein, hat sich gelohnt.
    Habs nun dank deiner Hilfe geschafft


Log in to reply