Форум: "Основная";
Текущий архив: 2003.07.24;
Скачать: [xml.tar.bz2];
ВнизУничтожение массива из списков Найти похожие ветки
← →
R (2003-07-11 07:38) [0]procedure TForm1.Button1Click(Sender: TObject);
var
SL:array of TStringList;
I:Integer;
begin
SetLength(SL,3);
For I:=0 To 2 Do
begin
SL[I]:=TStringList.Create;
SL[I].Add(IntToStr(I));
Memo1.Lines.Add(SL[I].Text);
end;
SL:=nil; //Вопрос такой корректное ли это уничтожение массива из TStringList
//или надо каждый список уничтожать чепрез Free, как правильно уничтожить массив
end;
← →
Digitman (2003-07-11 08:50) [1]
> или надо каждый список уничтожать чепрез Free
да, надо.
← →
Skier (2003-07-11 08:55) [2]
> или надо каждый список уничтожать чепрез Free,
Обязательно ! И только так !
А черезSL:=nil;
ты освобождаешь только лишь память выделенную под дин. массив 3*SizeOf(Pointer) байт.
Пару советов :
1)SL:=nil;
Писать не обязательно. Компилятор при выходе из метода освободит дин. массив сам (но (sic !) не освободит память выделенную под экз-ры TStringList)
2) вместоFor I:=0 To 2 Do
лучше писать
For I:=Low(SL) To High(SL) Do
← →
R (2003-07-11 09:11) [3]Спасибо Мастера еще один вопрос назрел
Я хочу в процедуру смены свойств компанента имеющую
такую запись procedure SetX(Val:array of String) передавать массив из строк, но когда записываю свойство через которое передается данный масив в компанент компилятор дает ошибку
свойство пишу так
property X: array of String write SetX ;
← →
Skier (2003-07-11 09:15) [4]type
TStringArray = array of String;
property X: TStringArray write SetX ;
Не выручит ?
← →
Alex_*** (2003-07-11 09:19) [5]Нельзя массивы как св-ва передавать. А по поводу дин. массива объектов, то удобне пользовать TObjectList - он сам разрушит объекты в своем списке
← →
Skier (2003-07-11 09:20) [6]Но судя по всему (???) тебе нужно индексированное св-во
property YourStrings[Index : Ineger] : String;...
Нет ?
← →
R (2003-07-11 09:22) [7]А в какой секции(месте) компанента прописывать
type
TStringArray = array of String;
← →
R (2003-07-11 09:27) [8]>Skier © (11.07.03 09:20)
Да свойство нужно индексированное
← →
Nucl (2003-07-11 09:30) [9]ё а если сначала SetLength(SL,0)
а потом SL:=nil
← →
Skier (2003-07-11 09:32) [10]>R (11.07.03 09:27)
Тогда лучше так
1) property X[Index : Ineger] : String read GetX write SetX
2) и использовать не дин. массив а TStringList
>Nucl © (11.07.03 09:30)
?!
← →
R (2003-07-11 09:34) [11]To >Skier ©
Как идексированное свойство передать в процедуру смены
SetX(......здесь как записать )
To >Nucl © (11.07.03 09:30)
Я так раньше и делал но Мастера говорят надо всеравно через Free
← →
Skier (2003-07-11 09:38) [12]> (11.07.03 09:34)
procedure SetX(const Value : Integer);
begin
if "проверка Value" then begin
//
end //if
else begin
//
end; //else
end;
← →
R (2003-07-11 09:42) [13]Всем спасибо, отдельно Skier ©
← →
ЮЮ (2003-07-11 09:42) [14]>Skier © (11.07.03 09:38)
А где Index?
>R (11.07.03 09:34)
В контектном меню выбери "Complete class at cursor" и будешь поражён, как много за тебя сделает Delphi :-)
← →
Skier (2003-07-11 09:43) [15]>ЮЮ © (11.07.03 09:42)
Не понял ?
← →
Skier (2003-07-11 09:46) [16]>ЮЮ © (11.07.03 09:42)
Да ! Точно ! Перепутал терминологию...
Такие свойства называются array properties
← →
R (2003-07-11 09:54) [17]Имеется в виду что?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.07.24;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.008 c