Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Вниз

Как работать с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.233 c
6-1105212252
Freedom
2005-01-08 22:24
2005.03.20
Сокеты


6-1105789949
Separator
2005-01-15 14:52
2005.03.20
Автодозвон


14-1109306288
begin...end
2005-02-25 07:38
2005.03.20
С Днём рождения! 25 февраля


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


14-1109348077
Бугага
2005-02-25 19:14
2005.03.20
DevExpress for Delphi 6





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский