5 / 5 / 1
Регистрация: 08.08.2011
Сообщений: 118

MFC, указатель на CListBox, Release версия

09.12.2012, 14:08. Показов 3091. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. У меня проблема:
Есть форма, на ней- ListBox, в программе задан как указатель(CListBox *pLBField). Есть функция, которая работает с этим элементом управления через указатель. Принимает она этот указатель в качестве аргумента. В Debug версии все работает правильно-функция принимает указатель, осуществляет работу с ListBox-ом. В Release версии творится что-то непонятное(уже создавал тему про предыдущую проблему-не объявлялись переменные в релиз версии, вроде как-то решил проблему). Сейчас проблема в том, что в какой-то момент времени(точно не знаю) что-то происходит с указателем. Сначала он принимает значение 0, потом ffffffff, хотя я его вообще не трогаю, только читаю и пишу строки... Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void CMatrix::MatrView(CListBox *pLBField,short x,short y)
{
    TCHAR buf[130]={0};//Для сохранения строки из pLBField
    pLBField->GetText(y,buf);//Чтение строки
    pLBField->DeleteString(y);//Удаление строки
    for(int a=x;(buf[a]==' ')||(buf[a]=='\0');a--)//Очистка места для строки матрицы
        buf[a]=' ';
    buf[x]=name;//Запись имени матрицы
    pLBField->InsertString(y,buf);//Сохранение получившейся строки
    for(short i=y+1;i<y+m+1;i++)//Запись строк матрицы
    {
        for(int v=0;v<130;v++)//Обнуление все йстроки
            buf[v]=0;
        pLBField->GetText(i,buf);//Чтение строки
        pLBField->DeleteString(i);//Удаление строки
        TCHAR BufDouble[255]={0};//Строка для элемента матрицы
        for(TInd k=0;k<this->n;k++)//Отображение всех элементов матрицы, находящихся на строке i-y-1
        {
            char MaxX=x+k*GetMaxElemWidth()+k;//Начальная позиция для отображения строки элементов матрицы
            sprintf (BufDouble, "%f",Matrix[i-y-1][k]);//Преобразование элемента матрицы в строку
            for(int q=MaxX+x;(buf[q]==' ')||(buf[q]=='\0');q--)//Очистка местя для элемента матрицы
                buf[q]=' ';
            for(TInd l=0;l<GetDoubleLength(Matrix[i-y-1][k],Accuaracy);l++)//Запись элемента матрицы в строку buf
                buf[MaxX++]=BufDouble[l];
        };
        pLBField->InsertString(i,buf);//Сохранение получившейся строки
    };
};
Значение на ffffffff указатель меняет после четвертой строки. Но если удалить все строки с 10-й по 27-ю, то функция работает номально(то есть делает часть задачи). Значение смотрел в отладчике, это неправильно для Release-версии, да? В общем, на строке 26 вылетает с ошибкой
"First-chance exception at 0x00403406 in MatrixWnd.exe: 0xC0000005: Access violation reading location 0x20349420.
Unhandled exception at 0x00403406 in MatrixWnd.exe: 0xC0000005: Access violation reading location 0x20349420."
Пожалуйста, подскажите, в чем дело. Читал, что дело может быть в указателе. Но в отладочной версии все работает, значит, с указателями все впорядке(я pLBField и не трогаю вообще).
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.12.2012, 14:08
Ответы с готовыми решениями:

MFC CListBox
Всем здравствуйте. Как можно сделать поиск в ListBox по нажатии на кнопку только одного элемента...

Смена цвета элемента в CListBox MFC
Здравствуйте. Подскажите, пожалуйста, нужно, чтоб при появлении надписи &quot;Invalid value&quot; элемент...

Про указатель *, указатель на указатель **, и про new
#include &quot;stdafx.h&quot; class neuro { public: double *inputs; int inputs_count; ...

21
5 / 5 / 1
Регистрация: 08.08.2011
Сообщений: 118
09.12.2012, 22:50  [ТС]
Студворк — интернет-сервис помощи студентам
Так получается, я пытаюсь прочесть строку, которой нету? Если бы весь листбокс был заполнен пустыми строками, все бы работало?

Добавлено через 19 минут
В общем, установил размер buf=800. Решение конечно не очень правильное, но другое придумывать нет времени. Будет работать в любом случае?
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
09.12.2012, 22:55
Цитата Сообщение от PazDim Посмотреть сообщение
. Будет работать в любом случае?
никто гарантий дать не может
я тебе показал несколько способов
решать тебе
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.12.2012, 22:55

Как получить ссылку на указатель или указатель на указатель в массиве?
В процессе реализации сортировки пузырьком натолкнулся на такую проблему: как поменять значения...

А почему нельзя передавать в ф-ю добавления элемента в стек один указатель? Почему нужен именно указатель на указатель?
Вот код ф-ии добавления элемента в стек: void push1(Node **top, int d) { // top...

Можно ли, используя указатель, а не указатель на указатель, обработать все элементы двумерного массива?
Можно ли, используя указатель, а не указатель на указатель, обработать все элементы двумерного...

Visual Studio 2008 Release - версия приложения, не объявляется переменная
Здравствуйте, у меня вопрос по Release-версии проекта. Есть проект, отладочная версия...

Окончательная версия проекта. Создание Release
У меня такая вот делема, когда я создают программу в VS 2012 c++ то она работает на моем только...


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

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

Новые блоги и статьи
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru