Я использую C ++ Builder XE4 на Windows7 Professional (32-разрядная версия).
У меня есть вопрос по TStringList;
Что я хотел бы сделать, это узнать, была ли переменная TStringList обновлена или нет, чтобы предотвратить добавление метода Add () к неотменяемому TStringList;
Я думал, что проверка NULL может сработать, но это не сработало.
TStringList *list;
// list = new TStringList(); // someone commented out by mistakes
if (list == NULL) {
ShowMessage(L"NULL");
} else {
ShowMessage(L"not empty");
}
return;
Приведенный выше код показывает «не пустой» диалог.
Что является стандартным способом проверки нового или не нового TStringList?
Очень часто в C / C ++ инициализируются указатели на NULL, и они должны быть нулевыми, когда они не указывают на что-то допустимое.
Таким образом, ваше утверждение if является очень распространенным и подходящим фрагментом кода.
Однако это требует инициализации вашей переменной.
Если не объявлено в глобальной / файловой области, строка: TStringList * list; не инициализирует переменную каким-либо конкретным значением — это оставляет ее указывающей на случайное дерьмо.
Вам нужно изменить его на TStringList * list = NULL; (или подобное, некоторые люди не любят «NULL»)
Других решений пока нет …