![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TStrings [D6]
AndreyAG © (2002-10-29 09:57:00)Уважаемые мастера вот код:
var
MyStrings:array of TStrings;
begin
SetLength(MyStrings,2);
MyStrings[0].Add("First");
end;
В RunTime ошибка. Что не так!
Зараннее благодарен!
VaS (2002-10-29 14:42:00) [1]Это обнуление указателя, для исключения обращения по нему после освобождения памяти (для локальной переменной - до конца процедуры).
KSergey (2002-10-29 13:59:00) [2]> MyStrings := nil;
Кто объяснит мне темному - зачем?! Как только выйдет из области видимости (переменная) - все и освободиться.
Или я сильно заблуждаюсь? (то, что иногда нужно принудительно освободить - это понятно)
VaS (2002-10-29 12:54:00) [3]...особенно если учесть возможность SetLength() по ходу дела.
Anatoly Podgoretsky (2002-10-29 10:58:00) [4]Особенно второй, это самое то
Юрий Зотов (2002-10-29 10:51:00) [5]Кстати, забыл - не проще ли вместо массива использовать TList или даже TObjectList? Советую рассмотреть эти варианты.
Юрий Зотов (2002-10-29 10:47:00) [6]И на самый последок:
MyStrings := nil;
VaS (2002-10-29 10:43:00) [7]Ну и напоследок:
for i:=Low(MyStrings) to High(MyStrings) do
MyStrings[i].Free;
AndreyAG (2002-10-29 10:07:00) [8]MBo и Юрий Зотов , Огромное спасибо.
Юрий Зотов (2002-10-29 10:05:00) [9]Расшифровываю
:о)
var
MyStrings: array of TStrings;
begin
SetLength(MyStrings, 2);
MyStrings[0] := TStringList.Create;
MyStrings[0].Add("First");
end;
MBo (2002-10-29 09:59:00) [10]1) перед использование объекты необходимо СОЗДАВАТЬ
2) создавать нужно объекты не абстрактного типа TStrings, а TStringList