Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Переменная TStringList, копирование строк


Автор: Pcrepair 21.6.2012, 20:59
Добрый день. есть следующее:

Код

var T1,T2:TstringList
 begin
   T1 := TStringList.Create;
   T2 := TStringList.Create;
   T1.Text := Memo1.Text; (*вводим в Т1 10 строк текста(к примеру), каждая строка одно слово*)
   .......
end.


Вопрос: как в Т2 скопировать только первые 3-и строки из Т1? что то сколько не смотрел методы и свойства TStringList так ничего и не увидел.

Автор: XperT 21.6.2012, 21:18
Готовых методов нету, нужно подключать смекалку.

Намёк: метод Strings

Автор: MetalFan 21.6.2012, 21:49
Цитата(XperT @  21.6.2012,  21:18 Найти цитируемый пост)
нужно подключать смекалку
 + 100!

Код

for i := 0 to 2 do T2.Add( T1[i] )



Автор: Pcrepair 22.6.2012, 07:00
вариант хороший

   
Код

 for i := 0 to 2 do
    T2.Add(T1[i])


и все работает, но такой косячок обнаружился:
если число строк в Т1 менее 3-х выскакивает исключение List index out of bonds() с указание строки в скобках, которой нехватает до 3-х

вообще число вводимых в МЕМО строк может быть и менее 3-х. и что тут сделать? написать if i < 3 then Exit(и вывести сообщение) перед всем. или есть другие варианты?
может обойтись без цикла и просто написать:

    
Код

T2.Add(T1[0])
    T2.Add(T1[1])
    T2.Add(T1[2])


Какой вариант правильный с точки зрения теории и практики?

Автор: chip_and_dayl 22.6.2012, 08:57
Цикл есть правильно.

А проверять нужно не И, а количество записей в T1. Есть свойство Count

Автор: MetalFan 22.6.2012, 11:35
Код

for i := 0 to min(pred(T1.Count), 2) do
    T2.Add(T1[i])

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)