Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Записать значение в low-order word of LPCTSTR ? 
:(
    Опции темы
WinDev
Дата 8.9.2011, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 25.12.2010

Репутация: нет
Всего: нет



Есть переменная типа LPCTSTR. Как записать нужное значение в младшее слово?
PM MAIL   Вверх
Cheloveck
Дата 8.9.2011, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: 5
Всего: 32



Код

LPCTSTR var = (LPCTSTR)100;

Я понимаю, если бы проблема была со старшим...


--------------------
user posted image
PM Jabber   Вверх
mes
Дата 8.9.2011, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Cheloveck @  8.9.2011,  08:20 Найти цитируемый пост)
Я понимаю, если бы проблема была со старшим... 


Цитата(Cheloveck @  8.9.2011,  08:20 Найти цитируемый пост)
Код

LPCTSTR var = (LPCTSTR)100

Я понимаю, если бы проблема была со старшим... 



Cheloveck, а с таким подходом старшее не затрется ?


--------------------
PM MAIL WWW   Вверх
newbee
Дата 8.9.2011, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: 3
Всего: 19



Цитата(Cheloveck @  8.9.2011,  10:20 Найти цитируемый пост)
LPCTSTR var = (LPCTSTR)100;

LPCSTR - это ж char const*, нет? Зачем в него числа записывать?


--------------------
You're face to face
With man who sold the world
PM   Вверх
bsa
Дата 8.9.2011, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(newbee @  8.9.2011,  09:31 Найти цитируемый пост)
LPCSTR - это ж char const*, нет?

не совсем. это скорее какой-нибудь const TCHAR *. Который в юникоде эквивалентен const wchar_t *, а в неюникоде - const char *.
PM   Вверх
Cheloveck
Дата 8.9.2011, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: 5
Всего: 32



Цитата(mes @  8.9.2011,  09:30 Найти цитируемый пост)
Cheloveck, а с таким подходом старшее не затрется ? 

Затрётся. В вопросе этого не было.


--------------------
user posted image
PM Jabber   Вверх
borisbn
Дата 8.9.2011, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(bsa @  8.9.2011,  10:39 Найти цитируемый пост)
не совсем. это скорее какой-нибудь const TCHAR *. Который в юникоде эквивалентен const wchar_t *, а в неюникоде - const char *

нет. const TCHAR * - это LPCTSTR, а 
Цитата(newbee @  8.9.2011,  09:31 Найти цитируемый пост)
LPCSTR - это ж char const*




--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
newbee
Дата 8.9.2011, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: 3
Всего: 19



borisbn, я опечаталась. В этих типах не мудрено smile Но вопрос остается в силе, зачем (может понадобиться) вручную модифицировать указатель?


--------------------
You're face to face
With man who sold the world
PM   Вверх
borisbn
Дата 8.9.2011, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



newbee, ага. только сейчас обратил внимание. Но для вопроса ТС что char *, что wchar_t * (да хоть void *) - это не важно. Всё это указатель (4 байта на 32-х битной системе).
А вот зачем в него (вернее в его младшую часть) что-то писать - вопрос  smile 


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
mes
Дата 8.9.2011, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Cheloveck @  8.9.2011,  13:07 Найти цитируемый пост)
Затрётся. В вопросе этого не было. 

было явно сказано, что нужно записать в младшее слово.. а не изменить целиком значение.. а это разные вещи..


--------------------
PM MAIL WWW   Вверх
bsa
Дата 8.9.2011, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(WinDev @  8.9.2011,  08:55 Найти цитируемый пост)
Как записать нужное значение в младшее слово? 

Код
LPCTSTR p;
...
p = (LPCTSTR)(((DWORD)p & 0xffff0000) | x); //x - значение, которое необходимо записать в младшее слово

данный жестко привязан к одной платформе (win32, на win64 работать НЕ БУДЕТ).
PM   Вверх
maydjin
Дата 8.9.2011, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 25.1.2010

Репутация: нет
Всего: нет



Цитата

данный жестко привязан к одной платформе (win32, на win64 работать НЕ БУДЕТ).

А разве на 64 битных платформах размер слова другой ?

Это сообщение отредактировал(а) maydjin - 8.9.2011, 18:21
PM MAIL   Вверх
bems
Дата 8.9.2011, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: нет
Всего: 88



Код

    LPCTSTR p;
    *((PUSHORT)&p) = x;

на машинах с прямым порядком байт работать не будет smile 



--------------------
Обижено школьников: 8
PM MAIL   Вверх
bems
Дата 8.9.2011, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: нет
Всего: 88



Цитата(borisbn @  8.9.2011,  14:39 Найти цитируемый пост)
А вот зачем в него (вернее в его младшую часть) что-то писать - вопрос
Ну например гранулярность выделения памяти в виндах - 64к. Соответственно изменяя младшее слово можно гарантированно остаться в том же регионе.


--------------------
Обижено школьников: 8
PM MAIL   Вверх
bsa
Дата 8.9.2011, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(maydjin @  8.9.2011,  18:21 Найти цитируемый пост)
А разве на 64 битных платформах размер слова другой ?

Размер слова тот же, но вот размер указателя другой. И он не влезает в DWORD.
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1104 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.