• Почему в буфер вставляется только первый символ?

    OCTAGRAM
    @OCTAGRAM
    Описание CF_TEXT (1):

    Text format. Each line ends with a carriage return/linefeed (CR-LF) combination. A null character signals the end of the data. Use this format for ANSI text.


    В Юникодных версиях Delphi обычный тип string = UnicodeString. А PChar = PWideChar. В этом формате символы кодируются двухбайтовыми числами. Все платформы, поддерживаемые Delphi, little endian, и это значит, что если число состоит из двух байт, то сначала идёт младший, а потом старший. У латинских букв и простых символов пунктуации номера маленькие, в диапазоне 32-126, для них хватает 7 бит. Так что номер буквы h в двухбайтовом представлении состоит из одного младшего байта с номером буквы h и неиспользуемым нулевым старшим байтом. По формату CF_TEXT нулевой байт значит конец строки.

    В юникодных Delphi вам нужен формат CF_UNICODETEXT. А под память нужно выделять и копировать (2 * Length(Value) + 2) байт.
    Ответ написан
    1 комментарий