Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.12.26;
Скачать: [xml.tar.bz2];

Вниз

convert LSA_UNICODE_STRING to string   Найти похожие ветки 

 
istok   (2010-09-27 16:15) [0]

как сконвертить LSA_UNICODE_STRING в string?


 
Anatoly Podgoretsky ©   (2010-09-27 16:29) [1]

Где это объявлено и как это объявлено.


 
istok   (2010-09-27 16:37) [2]

 USHORT = word;
   
 _LSA_UNICODE_STRING = record
   Length: USHORT;
   MaximumLength: USHORT;
   Buffer: LPWSTR;
 end;
 LSA_UNICODE_STRING = _LSA_UNICODE_STRING;

 LPWSTR = PWideChar; (из Windows.pas)


т.е. я так понял, что Buffer указывает на 1ый символ и надо прочесть всю строку и сконвертить в string..


 
12 ©   (2010-09-27 16:37) [3]

У джедаев оформлено как

 TLSAUnicodeString = packed record
   Length : WORD;
   MaximumLength : WORD;
   Buffer : PWideChar
 end;


 
12 ©   (2010-09-27 16:39) [4]

function LSAUnicodeStringToStr (const lsaStr : TLSAUnicodeString) : string;
var
 len : Integer;
begin
 len := lsaStr.Length div sizeof (WideChar);
 SetLength (result, len);
 WideCharToMultiByte (CP_ACP, 0, lsaStr.Buffer, len,  PChar (result), len, Nil, Nil);
end;


 
istok   (2010-09-27 16:45) [5]

спасибо!


 
Anatoly Podgoretsky ©   (2010-09-27 16:54) [6]

Я думаю хватит WS := PWideChar(Buffer);


 
han_malign   (2010-09-27 17:54) [7]


> Я думаю хватит WS := PWideChar(Buffer);

- при наличии точной длины, существование терминирующего символа не гарантированно, особенно при (Length = MaximumLength)...

ws: WideString;
...
SetString(ws, lsaStr.Buffer, lsaStr.Length);


 
Anatoly Podgoretsky ©   (2010-09-27 19:25) [8]


> The WideString type represents a dynamically allocated string
> of 16-bit Unicode characters. In most respects it is similar
> to AnsiString. On Win32, WideString is compatible with the
> COM BSTR type.

Почему я должен не верить Борману?


 
6x8   (2010-09-28 04:59) [9]


> Почему я должен не верить Борману?

Потому что борман тут не при делах. Это виндовая структура и читать про неё надо в SDK/MSDN, а не где попало. А там четко сказано


> Length
> Specifies the length, in bytes, of the string pointed to
> by the Buffer member, not including the terminating NULL
> character, if any
.
> ...
> Buffer
> Pointer to a wide character string. Note that the strings
> returned by the various LSA functions might not be null-
> terminated.



 
Anatoly Podgoretsky ©   (2010-09-28 08:55) [10]

> 6x8  (28.09.2010 04:59:09)  [9]

А WideString это Дельфи структура и не тыкай в меня null- terminated это
твоя задача сделать это null- terminated до использования. PChar тоже might
not be null-terminated.  Но это же никому не мешает, все работают и не
грустят.


 
6x8   (2010-09-28 12:11) [11]


> А WideString это Дельфи структура и не тыкай в меня null-
>  terminated это
> твоя задача сделать это null- terminated до использования.
>  

Да мне по барабану чё ты там делать будешь, а придёт тебе эта структура из системной или стороннеё либы, которая действует сторго согласно доки и которой до фонаря и ты, и дельфя и WideString, и получишь по самые помидоры.

Сам делай как хочешь, но хоть другим не ври - конфа-то для начинающих, постыдись


 
Jumbo   (2010-09-28 13:09) [12]

>>Anatoly Podgoretsky ©   (27.09.10 16:54) [6] Я думаю хватит WS := PWideChar(Buffer);

>>Anatoly Podgoretsky ©   (28.09.10 08:55) [10] А WideString это Дельфи структура и не тыкай в меня null- terminated это твоя задача сделать это null- terminated до использования.

Как-то [6] и [10] конфликтуют между собой. Если "задача сделать это null- terminated до использования", то тогда не "я думаю хватит". Если "я думаю хватит", то тогда не надо "сделать это null- terminated до использования". Выбрать нужно одно из двух. Точнее, выбирать-то нечего, решение в [7].


 
Anatoly Podgoretsky ©   (2010-09-28 13:23) [13]

> 6x8  (28.09.2010 12:11:11)  [11]

Аминь


 
Anatoly Podgoretsky ©   (2010-09-28 13:28) [14]


> Точнее, выбирать-то нечего, решение в [7].

Точнее одно из решений, точно также будет работать и buffer[lsaStr.Length]
Для строк, которые не содержат null, и будет buffer полностью совстимый с WS.


 
Клеррио   (2010-09-28 15:42) [15]

Anatoly Podgoretsky ©   (28.09.10 13:28) [14] и будет buffer полностью совстимый с WS.

Не будет.


 
Anatoly Podgoretsky ©   (2010-09-28 15:43) [16]

> Клеррио  (28.09.2010 15:42:15)  [15]

Причины?


 
Anatoly Podgoretsky ©   (2010-09-28 16:57) [17]


> han_malign   (27.09.10 17:54) [7]

Я думаю что в его случае SetString не применим, хотя он не указал версии Дельфи.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2010.12.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.004 c
2-1285609884
menart
2010-09-27 21:51
2010.12.26
TImage


15-1284582567
Юрий
2010-09-16 00:29
2010.12.26
С днем рождения ! 16 сентября 2010 четверг


15-1284628580
oldman
2010-09-16 13:16
2010.12.26
Диаграмма Вороного (разбиение Дирихле)


15-1284459038
Savek
2010-09-14 14:10
2010.12.26
Подмена IP адреса


2-1285773040
asd
2010-09-29 19:10
2010.12.26
запуск exe





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский