Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.24;
Скачать: CL | DM;

Вниз

Уничтожение массива из списков   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.013 c
3-77811
Kati
2003-07-03 16:44
2003.07.24
Событие поля TekSetText


14-78112
sss123456
2003-07-07 17:03
2003.07.24
Слишком сложный и неудобный форум


1-77821
stkatch
2003-07-09 16:36
2003.07.24
Как узнать Handle текущего потока (Thread)


1-77973
MalkoLinge
2003-07-10 18:00
2003.07.24
Замена события !


6-78030
LOX
2003-05-04 15:20
2003.07.24
SMTP сервер