Главная страница
    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.47 MB
Время: 0.037 c
4-1107541104
serko
2005-02-04 21:18
2005.03.20
Имя компа


14-1109572361
1008
2005-02-28 09:32
2005.03.20
Может статься так, что:


9-1104003473
MrAngel
2004-12-25 22:37
2005.03.20
Выполняем IDirect3DDevice9::CreateVertexBuffer в другом потоке


4-1107341470
alpet
2005-02-02 13:51
2005.03.20
Быстрое снятие задачи.


1-1110095064
Checist [root]
2005-03-06 10:44
2005.03.20
TreeNode





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский