Страница 1 из 1

TStringLists

СообщениеДобавлено: 07.03.2010 16:18:30
VirtUX
Решил дополнять класс TStringList разными фичами для удобства. Выкладываю начальный вариант. Просьба отписаться о нужности оного, и, может быть, предложения для добавления новых свойств и методов.

Описание уже добавленных:

property CombinedLine[by: string]: string read GetCombinedLine write SetCombinedLine;
Возвращает строку собранную из списка с разделителями by. Разделители ставятся и в начало, и в конец строки. При нулевом размере списка возвращает by. При записи добавляет к имеющемуся списку список собранный из строки разбитой с помощью by.
property EndIndex: integer read GetEndIndex write SetEndIndex;
Возвращает номер последнего индекса в списке. Устанавливает (с обрезанием или донаращиванием из DefString списка) размер списка по последнему индексу.
property Count: integer read GetCount write SetCount;
Возвращает размер списка. Устанавливает размер по типу как с EndIndex.
property DefString: string read FDefString write FDefString;
Строка, добавляемая по умолчанию, при изменении размера списка.
procedure Invert;
Инвертирует список.
procedure ChangeEncoding(EC: TEncoding);
TEncoding = (eDOS866, eWin1251, eUTF8);
Собственно перекодирует в нужную кодировку весь список. По умолчанию установлена кодировка UTF8, т.е. eUTF8.
procedure DeleteFromTo(InxFrom, InxTo: integer);
Удаляет строки начиная с индекса InxFrom до InxTo включительно.
procedure GetEvenList(EL: TStrings);
Помещает в EL строки с четным индексом.
procedure GetOddList(EL: TStrings);
Помещает в EL строки с нечетным индексом.
procedure DeleteEvenList;
Удаляет из списка все строки с четным индексом.
procedure DeleteOddList;
Удаляет из списка все строки с нечетным индексом.
procedure ClearsSub(const Sub: string = ' '; Method: TClearSub = csAround);
TClearSub = (csAround, csAll, csBegin, csEnd);
очищает все строки списка от подстрок Sub методом Method. csAround - вначале и вконце; csAll - все, которые встретятся; csBegin - вначале; csEnd - вконце.

Бонус:
В модуле StringsMake есть ряд процедур и функций по работе со строками и списками.
function FromPos(const P, Str: String; const FP: Word): SizeInt; //ищет подстроку, начиная с FP номера
procedure AddStrIfNot(var S: string; Added: string); //Добавляет строку Added к S, если ее нет в конце
procedure ClearSub(var S: string; const Sub: string = ' '; Method: TClearSub = csAround); //удаляет все Sub из строки
procedure ClearSub(S: TStrings; const Sub: string = ' '; Method: TClearSub = csAround); //тоже из списка
procedure ClearFromChar(var S: string; const Ch: string); //удаляет все символы начиная с первого найденного Ch
function TStringsToStr(TS: TStrings; By: string = ''): string; //возвращает строку, собранную из списка TS с разделителями By
function FwPStrToDoubleDef(var S: string; Def: Double): Double;
function DoubleToFwPStr(D: Double): string;
function RandomEngStr(CountCh: Word): String; //Формирует строку в размере CountCh из случайных символов латиницы
//Перекодировки
procedure Windows1251ToUTF8(var Str: string);
procedure UTF8ToWindows1251(var Str: string);
procedure OEM866ToUTF8(var Str: string);
procedure UTF8ToOEM866(var Str: string);
procedure OEM866ToWindows1251(var Str: string);
procedure Windows1251ToOEM866(var Str: string);
procedure DOS8662UTF8Strings(var S: TStrings);
procedure UTF82DOS866Strings(var S: TStrings);
stringsmake.pas.zip
(7.81 КБ) Скачиваний: 535

Re: TStringLists

СообщениеДобавлено: 27.05.2010 20:52:56
minoshi
procedure DeleteList(InxFrom, InxTo: integer);
Удаляет строки начиная с индекса InxFrom до InxTo включительно.

может процедуру назвать DeleteFromTo? по смыслу больше подходит

Re: TStringLists

СообщениеДобавлено: 28.05.2010 16:08:25
VirtUX
Изменил + добавил еще кое-чего.
Была найдена ошибка в TStringLists.ClearSub - переименовано в TStringLists.ClearsSub.