
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.52] |
![]() |
|
Сообщ.
#1
,
|
|
|
Добрый день. есть следующее:
![]() ![]() var T1,T2:TstringList begin T1 := TStringList.Create; T2 := TStringList.Create; T1.Text := Memo1.Text; (*вводим в Т1 10 строк текста(к примеру), каждая строка одно слово*) ....... end. Вопрос: как в Т2 скопировать только первые 3-и строки из Т1? что то сколько не смотрел методы и свойства TStringList так ничего и не увидел. |
Сообщ.
#2
,
|
|
|
![]() ![]() For I := 0 to 2 do T2.Add(T1[I]); |
Сообщ.
#3
,
|
|
|
вариант хороший
![]() ![]() 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]) Какой вариант правильный с точки зрения теории и практики? |
Сообщ.
#4
,
|
|
|
Ну так проверь путем создания двух кусков кода и визуально сравни совпадают или нет,
|
Сообщ.
#5
,
|
|
|
Цитата Pcrepair @ если число строк в Т1 менее 3-х выскакивает исключение List index out of bonds() с указание строки в скобках ![]() ![]() procedure CopyStringListLines(const aSrc: TStringList; var aDest: TStringList; aFirstLineIndex, aLinesCount: Integer); var I: Integer; begin if aSrc.Count - 1 < aFirstLineIndex + aLinesCount then aLinesCount := aSrc.Count - 1 - aFirstLineIndex; for I := aFirstLineIndex to aFirstLineIndex + aLinesCount do aDest.Add('aSrc[I]'); end; |
Сообщ.
#6
,
|
|
|
Profi, спасибо и два маленьких вопроса:
aDest.Add('aSrc[I]'); - это что специально? ну ковычки? еще некоторые пишут: aDest.Add(aSrc.Strings[I]); результат один и тот же, какой смысл в усложнении? |
Сообщ.
#7
,
|
|
|
Цитата Pcrepair @ еще некоторые пишут: aDest.Add(aSrc.Strings[I]); результат один и тот же, какой смысл в усложнении? Привычка со времен ранних версий Дельфи. |
Сообщ.
#8
,
|
|
|
так это правильная привычка?
а то тут пишут: If a class has a default property, you can access that property with the abbreviation object[index], which is equivalent to object.property[index]. For example, given the declaration above, StringArray.Strings[7] can be abbreviated to StringArray[7]. A class can have only one default property with a given signature (array parameter list), but it is possible to overload the default property. Changing or hiding the default property in descendent classes may lead to unexpected behavior, since the compiler always binds to properties statically. Если класс имеет свойство по умолчанию, вы можете получить доступ к этой свойствам с сокращением объекта [индекс], что эквивалентно object.property [индекс]. Например, если объявление выше, StringArray.Strings [7] может быть сокращено до StringArray [7].Класс может иметь только одно свойство по умолчанию с заданной подписью (список параметра-массива), но это возможно перегружать свойство по умолчанию. Изменение или скрывать свойства по умолчанию в потомком класса может привести к неожиданному поведению, так как компилятор всегда привязывается к свойствам статически. |
Сообщ.
#9
,
|
|
|
Цитата Pcrepair @ так это правильная привычка? Это просто привычка. И к тому же в интернете очень много примеров созданных очень давно. И некоторые примеры годятся и в старых и новых версиях, а некоторые только в старых. |