Главная страница
    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.035 c
14-1109525705
Piter
2005-02-27 20:35
2005.03.20
Где достать декомпилятор для Visual Basic?


1-1110284608
h010d
2005-03-08 15:23
2005.03.20
Беда с завершением работы потока


14-1109612601
}|{yk
2005-02-28 20:43
2005.03.20
По поводу Евровидения-2005


3-1108846905
NikNet
2005-02-20 00:01
2005.03.20
Проблема добовление данных в связоную таблицу?


4-1107414279
ksa2002
2005-02-03 10:04
2005.03.20
Переменные в потоке





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