Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Возникла проблема с Lpctstr

1.8K
24 мая 2004 года
scanf
72 / / 10.12.2003
Возникла проблема с LPCTSTR.
Есть переменная этого самого типа.
пишу :
LPCTSTR my_str;
my_str="String";
При Debug компиляции на VC++ 7 значение
нормально принемается. Hо в релисе почемуто my_str либо
вобще ни чего не принемает либо заполняется мусором.
Ктото знает почему и что делать с этим ?
319
24 мая 2004 года
xelos
577 / / 27.02.2003
Цитата:
Originally posted by scanf
Возникла проблема с LPCTSTR.
Есть переменная этого самого типа.
пишу :
LPCTSTR my_str;
my_str="String";
При Debug компиляции на VC++ 7 значение
нормально принемается. Hо в релисе почемуто my_str либо
вобще ни чего не принемает либо заполняется мусором.
Ктото знает почему и что делать с этим ?


LPCTSTR - это указатель, имхо не стоит ставить знак равенства и писать строку.

4.9K
25 мая 2004 года
mrhx
43 / / 04.04.2004
Цитата:
Originally posted by scanf
Возникла проблема с LPCTSTR.
Есть переменная этого самого типа.
пишу :
LPCTSTR my_str;
my_str="String";
При Debug компиляции на VC++ 7 значение
нормально принемается. Hо в релисе почемуто my_str либо
вобще ни чего не принемает либо заполняется мусором.
Ктото знает почему и что делать с этим ?


Вообще странно как-то... Но тем не менее попробуй следующие два варианта:
1) Сразу же присваивать значение при объявлении переменной LPCTSTR my_str = "...";
2) Заместо LPCTSTR использовать LPSTR, то есть char*

1.8K
25 мая 2004 года
scanf
72 / / 10.12.2003
Цитата:
Originally posted by mrhx

Вообще странно как-то... Но тем не менее попробуй следующие два варианта:
1) Сразу же присваивать значение при объявлении переменной LPCTSTR my_str = "...";
2) Заместо LPCTSTR использовать LPSTR, то есть char*



Народ спасибо всем я разобрался сам.
Просто при заполнении этого типа нужно в конце
ставить \0.
LPCTSTR my_str;
my_str="String\0";
В таком случае всё работает нормально.

3
25 мая 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by scanf

Народ спасибо всем я разобрался сам.
Просто при заполнении этого типа нужно в конце
ставить \0.
LPCTSTR my_str;
my_str="String\0";
В таком случае всё работает нормально.



Фраза "при заполнении этого типа" некорректная.
Кроме того в конце строкового литерала всегда есть завершающий ноль. Так что твое предположение неверно.
Возможно, проблема кроется в использовании Unicode, т.к. при различных вариантах компиляции макрос LPCTSTR раскрывается в разные типы (const char* или const wchar_t*). Т.о. при раскрытии в const wchar_t* на конце (если смотреть по-байтовый дамп) должно быть два завершающих нуля, но то как ты его сделал - неверно.
Я бы рекомендовал написать строку так:
my_str = _T("String");

Так же обращаю внимание, что макрос раскрывается в указатель на константу.

2.6K
26 мая 2004 года
Hearse
89 / / 19.01.2004
Гм... Мнится мне что такое присваивание по определению неверно правильно было бы что-то типа этого
 
Код:
CHAR   str[100]="string";
LPCSTR p_str=str;

Хотя это может быть и глюк.
3
26 мая 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Hearse
Гм... Мнится мне что такое присваивание по определению неверно правильно было бы что-то типа этого
 
Код:
CHAR   str[100]="string";
LPCSTR p_str=str;

Хотя это может быть и глюк.



Ну это совсем неверно.
Никто не мешает взять указатель на строковый литерал.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог