Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
5 / 5 / 1
Регистрация: 08.08.2011
Сообщений: 118

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

09.12.2012, 14:08. Показов 2986. Ответов 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,874
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
Ответ Создать тему
Новые блоги и статьи
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
сукцессия 9. Математика подлости: как растения предали грибных друзей
anaschu 27.06.2026
Статья 2. Глобальная фосфорная война: эволюционно-экономические механизмы распределения биомов Земли Введение: Экологический рынок как игра с нулевой суммой Традиционная экология долгое время. . .
сукцессия 8. Как я спорил с ИИ, которые - агенты растений и ненавистники грибов!
anaschu 27.06.2026
Статья 1. Хроники грибного восстания: как Сократов диалог разрушил академические догмы ИИ Введение: Синдром «цифрового учебника» Современные большие языковые модели (LLM) обладают колоссальным. . .
Главный вопрос моделирования сукцессии
anaschu 27.06.2026
главный вопрос. Если эктомикориза лучше добывает недоступный фосфор. И ее масса максимальна из всех. А широколиственный лес тоже имеет самую крутую биомассу. То почему не возникло их симбиоза? Это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru