Форум программистов, компьютерный форум, киберфорум
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
deft
1

wchar_t, wstring и буфер обмена. Ошибка: Stack around the variable 'curt' was corrupted

10.07.2013, 16:17. Просмотров 1070. Ответов 4
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
wchar_t curt[] = L"";
// тип CurText — wstring
int i;
for (i = 0; i < CurText.size(); i++) // преобразую wstring к wchar_t. Возможно нужно по другому
{
curt[i] = CurText[i];
}
 
curt[i] = '\0';
OpenClipboard(0);
EmptyClipboard();
HGLOBAL hStrMem = GlobalAlloc(GMEM_MOVEABLE, sizeof(curt));
void* pStrMem = GlobalLock(hStrMem);
memcpy(pStrMem, curt, sizeof(curt));
GlobalUnlock(pStrMem);
SetClipboardData(CF_UNICODETEXT, hStrMem);
CloseClipboard();
return 0;
А текст вида curt = L"тест копирования" прекрасно копируется в буфер обмена.

Ошибка Stack around the variable 'curt' was corrupted
происходит после выхода из функции
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.07.2013, 16:17
Ответы с готовыми решениями:

Ошибка «Stack around the variable 'p' was corrupted»
После вывода консолью ASCII-символов, в коде вылазит ошибка «Stack around the variable 'p' was...

Ошибка: Stack around the variable 'Material' was corrupted
При компиляции кода на C++, выводит ----Run-Time Check Failure #2 - Stack around the variable...

Отладка проекта с mpi: ошибка corrupted stack around variable
Подскажите пожалуйста, как правильно отлаживать проект с mpi Windows7x64, VS2010, microsoft hpc...

Ошибка Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted
Суть работы: Дана непустая последовательность слов (не более 30), в каждом слове не более восьми...

4
266 / 188 / 33
Регистрация: 15.01.2011
Сообщений: 681
10.07.2013, 17:38 2
грохнул буфер,вот и все дела.
C++
1
2
3
4
5
6
7
HGLOBAL WINAPI GlobalAlloc(
  _In_  UINT uFlags,
  _In_  SIZE_T dwBytes // байты
//
HGLOBAL hStrMem = GlobalAlloc(GMEM_MOVEABLE, sizeof(curt)*sizeof(wchar_t));
 
);
0
37 / 32 / 6
Регистрация: 17.09.2012
Сообщений: 66
10.07.2013, 17:41 3
wstring к wchar_t? Ну так пишите .c_str() и получайте указатель на const wchar_t *.
А это неправильно:
C
1
2
3
4
5
6
7
wchar_t curt[] = L"";
// тип CurText — wstring
int i;
for (i = 0; i < CurText.size(); i++) // преобразую wstring к wchar_t. Возможно нужно по другому
{
curt[i] = CurText[i];
}
Целевой буфер в sizeof(wchar_t) по сути, при том, что размер содержимого CurText может быть произвольным. Память кто выделять будет?
0
deft
11.07.2013, 12:17 4
Спасибо. Со вставкой разобрался. А как из буфера получить текст и загнать его в wstring? У меня получаются иероглифы в итоге.
C++
1
2
3
4
5
6
7
8
9
10
11
HGLOBAL buf = NULL;
wstring lptstr;
if(IsClipboardFormatAvailable(CF_TEXT)) { // если в буфере формат данных(текса)
if(OpenClipboard(GetForegroundWindow())) { // открываем буфер-обмена
// получаем указатель на буфер-обмена
if((buf = (HGLOBAL) GetClipboardData(CF_TEXT)) != NULL)
{
lptstr = (wstring)GlobalLock(buf);
}
}
}
Добавлено через 55 секунд
Точнее со вставкой не разобрался, но получилось
37 / 32 / 6
Регистрация: 17.09.2012
Сообщений: 66
11.07.2013, 14:03 5
http://www.cplusplus.com/refer... ng/assign/
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.07.2013, 14:03

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Ошибка Run-Time Check Failure #2 - Stack around the variable 'B' was corrupted
Ошибка Run-Time Check Failure #2 - Stack around the variable 'B' was corrupted Суть работы - дан...

Ошибка Run-Time Check Failure #2 - Stack around the variable 'TicketNumber' was corrupted
Всем доброго времени суток! Программа выполняется, но в конце вылетает раздражающее окно с ошибкой....

Ошибка: Run-Time Check Failure #2 - Stack around the variable 'ttt1' was corrupted
Ошибка при дебаге. Помогите понять в чем дело. Visual Studio 2010 Код #include...

Ошибка run-time check failure #2 - stack around the variable 'findmonths' was corrupted
Есть код: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; #include &lt;conio.h&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.