![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Guest |
|
|||
|
Unregistered |
Не пинайте сильно за детские вопросы.
Как в C# преобразовать типы char* в string и обратно. Какой тип в C# соответствует типу WCHAR, TCHAR (VC++), и как к этому типу преобразовать char*. И вообще где про енто написано (кроме MSDN). Как описать константу, которая в VC++ описана так: #define INVALID_HANDLE_VALUE ((HANDLE)(LONG_PTR)-1) Спасибо. |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
хендлы обычно в C# типа IntPtr, так что похоже придется при сравнении делать так if (Handle == new IntPtr(-1)) {...} -------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
можно еще так:
но это уже не совсем константа -------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| stab |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
char
у String есть конструктор unsafe public String(char*);
это уже от задачи зависит, если надо параметр в API функцию передать то автоматом конвертится, а если буфер какой заполнить то просто копирование посимвольное. -------------------- 6, 6, 6 - the number of the beast. |
||||||
|
|||||||
| Unregistered |
|
|||
|
Unregistered |
А вообще-то, как объявить константу типа Guid?
Guid CLSID_IMan = new Guid("{499C0C20-A766-11cf-8011-00A0C90A8F78}"); |
|||
|
||||
| Unregistered |
|
|||
|
Unregistered |
Но: тип Handle есть int, поэтоиу '==' не проходит. |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
описывай как string потом new Guid(myStringGUID) или через readonly поля
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
тип Handle в .net есть IntPtr, а если у тебя Handle типа int то и работай с ним как с обычным int.
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
Кстати HANDLE ни когда не был int, вот описание из winnt.h
Сделано это затем, что handle это либо индекс в системной таблице либо указатель на запись в системной области памяти, т.е. размер handle напрямую зависит от системы адресации. Т.е. если адресаци 32-х битная, то размер handle 32 бита, если 64-х битная, то размер 64 бита. -------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| Unregistered |
|
|||
|
Unregistered |
То есть надо так:
IntPtr Handle = new IntPtr(); ... if (Handle == new IntPtr(-1)) //правильно или же public static readonly IntPtr INVALID_HANDLE_VALUE = new IntPtr(-1); |
|||
|
||||
| Unregistered |
|
|||
|
Unregistered |
А в каком using лежит unsafe public String(char*)? |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
мне больше нравиться public static readonly IntPtr INVALID_HANDLE_VALUE = new IntPtr(-1), красивее как-то
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
System А что конкретно нужно со строками делать? -------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| Unregistered |
|
|||
|
Unregistered |
Короче, я запускаю из Dll, например, CeCreateFile(string lpFileName, ...), но так как на покете только Unicode, то поймет ли он string как Unicode?
|
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
должен, но на всякий случай можно пропиасть CharSet:
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |