|
Вопрос # 3 699/ вопрос открыт / |
|
Здравствуйте, эксперты!
Сегодня вылезла ошибка "Acess violation.." при попытке добавить строку в Memo или сообщение в StatusBar.
Хотя вчера все было Ок.
Комментирую одну строку, вылетает на следующей. В чем может быть дело?
C++Builder2007
 |
Вопрос задал: Muratov Radik (статус: Посетитель)
Вопрос отправлен: 27 января 2010, 11:10
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 28; последнее сообщение — 28 января 2010, 10:52; участников в обсуждении: 4.
Страницы: [« Предыдущая] [1] [2]
|
Вадим К (статус: Академик), 27 января 2010, 15:35 [#21]:
если конструктор пустой, то можно его и не писать. там должна быть начальная инициализация. А что это будет - это известно только автору класса
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Muratov Radik (статус: Посетитель), 27 января 2010, 15:38 [#22]:
Отладка показала, что Size равно тому, что я задаю
|
|
Muratov Radik (статус: Посетитель), 27 января 2010, 15:40 [#23]:
А деструктор нужен? Я ведь создаю
Data = new unsigned int[Size];
Должен я его удалять?
|
|
Вадим К (статус: Академик), 27 января 2010, 15:44 [#24]:
да, конечно. Но не обязательно в деструкторе.
А вот пользоваться отладкой для того, что бы подсмотреть, чему равна переменая - я бы не делал. уже видел примеры того, как объявлялась переменная/макрос с тем же именем и отладчик показывал другое имя.
Попробуйте в целях эксперимента закоментировать весь цикл обнуления. пропадет ошибка?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Muratov Radik (статус: Посетитель), 27 января 2010, 16:12 [#25]:
А где лучше объявлять переменные типа моего класса?
Так:
class TMemoryBlock
{
public:
unsigned int StartAddr;
unsigned int Size;
unsigned int *Data;
//
//TMemoryBlock();
~TMemoryBlock();
//
void InitData(unsigned int initValue);
void SaveDataToFile(AnsiString fName, AnsiString blockName);
void LoadDataFromFile(AnsiString fName, AnsiString blockName);
};
//
extern "C++" TMemoryBlock *block1;
extern "C++" TMemoryBlock *block2;
extern "C++" TMemoryBlock *block3;
Или в секции Public формы, где я их использую?
|
|
Вадим К (статус: Академик), 27 января 2010, 16:21 [#26]:
где размещать - это вопрос дизайна. тут сложно посоветовать. я может быть сделал бы один класс, в который бы их все заключил - таким образом не надо было бы сколько переменных.
Второе- если есть extern "C++" TMemoryBlock *block1;
то где то должно быть TMemoryBlock *block1;
и не совсем понятно, зачем указывать "С++". как по мне, то лишнее.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Muratov Radik (статус: Посетитель), 27 января 2010, 16:22 [#27]:
Цикл убрал, ошибка осталась
|
|
Muratov Radik (статус: Посетитель), 28 января 2010, 10:52 [#28]:
Всем большое спасибо за помощь! Особенно Вадиму!
Я нашел ошибку.
|
Страницы: [« Предыдущая] [1] [2]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|