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

Вниз

Как работать с TStrings   Найти похожие ветки 

 
ТехникПТО ©   (2005-03-03 20:16) [0]

Допустим я переменной s:tStrings  s:=listbox.items
и как эти итемс от туда досатвать??


 
Anatoly Podgoretsky ©   (2005-03-03 20:21) [1]

По индексу


 
TUser ©   (2005-03-03 20:21) [2]


> s:tStrings  

TStringList

.Strings[i] == [i]


 
Checist [root]   (2005-03-03 20:21) [3]

А если s[i], где i- индекс итема


 
P.N.P. ©   (2005-03-03 20:23) [4]

var
s:Tstrings;
begin
s:=TstringList.Create;
s.assign(ListBox.Items);
showmessage(s[0]);
end;


 
ТехникПТО ©   (2005-03-03 20:32) [5]


> var
> s:Tstrings;
> begin
> s:=TstringList.Create;
> s.assign(ListBox.Items);
> showmessage(s[0]);
> end;

а как узнать сколько всего индексов?


 
Anatoly Podgoretsky ©   (2005-03-03 20:34) [6]

Count


 
Дмитрий Мыльников   (2005-03-03 23:21) [7]

В принципе можно и не делать копию списка строк через создание  экземпляра TStringList и последующим вызовом assign.
То есть код

var
 S: TStrings
 str1: string;
begin
...
 S := ListBox.Items;
...  
 str1 :=  S[I];

будет вполне рабочий. Главное, чтобы пока мы используем S, содержимое ListBox не менялось и сама форма не удалялась.
Если же гарантии сохранности ListBox или его содержимого нет, то следует использовать что-то типа:

var
 S: TStringList;
 str1: string;
begin
 ...
 S: = TStringList.Create;
 try
   ...
   S.Assigned(ListBox.Items);
   ...
   str1 := S[i]; //используем содержимое списка
   ...
 finally
   S.Free;  //после того как попользовались ОБЯЗАТЕЛЬНО УДАЛЯЕМ
            //ЭКЗЕМПЛЯР КЛАССА !!!
 end;
 ...
end;

Да, поскольку свойство Strings[Index:integer]:string у TStrings объявлено как default, то его можно опускать.

Кстати, в принципе допустим и такой код
var
 S: TString;
 str1: string;
begin
 ...
 S: = TStringList.Create;
 try
   ...  //и далее предыдущий пример.

То есть, переменную можно объявить класса-предка от той, которую реально создадим, если это, конечно, нужно.


 
P.N.P. ©   (2005-03-03 23:28) [8]

>Дмитрий Мыльников   (03.03.05 23:21) [7]
>ОБЯЗАТЕЛЬНО УДАЛЯЕМ
Ничего подобного, локальные переменные уничтожаются автоматом
при завершении процедуры.
См. хелп:

Each time a procedure or function is called, it allocates a set of local variables; on exit, the local variables are disposed of. Compiler optimization may eliminate variables earlier


 
jack128 ©   (2005-03-03 23:33) [9]

P.N.P. ©   (03.03.05 23:28) [8]
Ничего подобного,

Дима сказал, что мы иничтожаем ЭКЗЕМПЛЯР объекта, а не переменную, в которорй хранится указатель на этот экземпляр..


 
P.N.P. ©   (2005-03-03 23:42) [10]

Да, действительно, я неправ.
Требуется освобождение памяти.



Страницы: 1 вся ветка

Текущий архив: 2005.03.20;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.059 c
1-1110102467
leonidus
2005-03-06 12:47
2005.03.20
Знатокам компонента VCLZIP


14-1108580646
ArMellon
2005-02-16 22:04
2005.03.20
Сервис для перекачки файлов


4-1107952663
BVV
2005-02-09 15:37
2005.03.20
ID усиановленных устройств


1-1109762421
Leech
2005-03-02 14:20
2005.03.20
Переход с D6 на D7


1-1109783865
msgipss
2005-03-02 20:17
2005.03.20
Помогите создать иерархию, динамической вложенности