Я использую 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 и их значение равно null, если они не указывают на что-то действительное.
Таким образом, ваш оператор if является очень обычным и подходящим фрагментом кода.
Однако это требует инициализации вашей переменной.
Если не объявлено в области global/file, строка: TStringList * list; не инициализирует переменную до какого-либо определенного значения - это оставляет ее указывая на случайное дерьмо.
Вам нужно изменить его на TStringList * list = NULL; (или подобные, некоторые люди не любят "NULL")