Форум: "Основная";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
ВнизПроверить объект на существование Найти похожие ветки
← →
Viktor (2004-04-17 16:52) [0]Добрый день
Не подскажете ли как сделать сабжvar
MyArray: array [1..5] of TSomeClass;
...
if (MyArray[i] не создан) then
MyArray[i] := TSomeClass.Create;
MyArray[i].SomeProperty := Value;
MyArray[i].DoSomething;
или как это сделать по-другому.
Спасибо.
← →
TUser © (2004-04-17 16:55) [1]if not assigned(MyArray[i]{ не создан}) then
MyArray[i] := TSomeClass.Create;
← →
Anatoly Podgoretsky © (2004-04-17 17:00) [2]Что бы работало через assigned нужно при освобожденнии объекта присваивать MyArray[i] nil
← →
Gero © (2004-04-17 17:04) [3]> Anatoly Podgoretsky © (17.04.04 17:00)
FreeAndNil, короче
← →
Viktor (2004-04-17 17:13) [4]Написал небольшой тест. Разницы то нет в массиве объект или нет.
procedure TForm1.btnTestClick(Sender: TObject);
var
aButton: TButton;
begin
//aButton := TButton.Create(nil);
if not assigned(aButton) then
ShowMessage("Объект не создан!")
else
ShowMessage("OK");
aButton.Free;
end;
Здесь какой-то баг. Жмём на btnTest - появляется сообщение OK (!)
а затем кнопка Тест пропадает. Если раскомментировать создание объекта, тоже появится OK.
Что-то здесь не так!
← →
Viktor (2004-04-17 17:18) [5]FreeAndNIL работает, если только aButton создан. В противно случае вылетает Access Violation :(
← →
TUser © (2004-04-17 17:20) [6]Читай [2]
← →
Viktor (2004-04-17 17:27) [7]Всё работает. Спасибо за подмогу :)
← →
KSergey © (2004-04-18 12:03) [8]> Viktor (17.04.04 17:13) [4]
> Что-то здесь не так!
Assign - лишь проверка на nil (фактически - 0)
А локальные переменные изначально нулем не инициализируются!!
← →
Anatoly Podgoretsky © (2004-04-18 12:07) [9]Viktor (17.04.04 17:13) [4]
Тебе очень повезло, так и систему загробить недолго, хоть она и защищенная.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.032 c