|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
TStringList IndexOf и IndexOfName в чём суть разницы
то что нашёл в инете ввело в заблуждение, тему удалите
Нарыл в инете IndexOf - "В VCL Help написано, что TStringlist.IndexOf возвращает ссылку на ПЕРВЫЙ объект списка, имеющий заданное имя." IndexOfName - "function IndexOfName(const Name: string): Integer; возвращает индекс найденного элемента, для которого свойство Names совпадает со значением параметра Name." возникло в случае поиска строки в списке типа: 0=один 0=два 0=три list.IndexOf('0=один'); // 0, ожидал 0 list.IndexOf('0=два'); // 0, но хотелось 1 list.IndexOf('0=три'); // 0, хотел 2 я что то не так понимаю, зачем тогда два разных метода с одним результатом Последний раз редактировалось dent, 31.08.2011 в 16:09. |
#2
|
||||
|
||||
Код:
function TStrings.IndexOfName(const Name: string): Integer; var P: Integer; S: string; begin for Result := 0 to GetCount - 1 do begin S := Get(Result); P := AnsiPos(NameValueSeparator, S); if (P <> 0) and (CompareStrings(Copy(S, 1, P - 1), Name) = 0) then Exit; end; Result := -1; end; — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
||||
|
||||
Цитата:
Код:
begin ShowMessage(IntToStr(Memo1.Lines.IndexOf('1=два'))); // = 1 ShowMessage(IntToStr(Memo1.Lines.IndexOf('0=пять'))); // = 3 ShowMessage(IntToStr(Memo1.Lines.IndexOfName('2'))); // = 2 ShowMessage(Memo1.Lines.Values['2']); // = три ShowMessage(Memo1.Lines.Names[1]); // = 1 end; Пишу программы за еду. __________________ |
#4
|
|||
|
|||
копаю код, ишу бубен
|
#5
|
|||
|
|||
копаю код, прошу прощения за дезинформацию
|
#6
|
|||
|
|||
IndexOf() рассматривает строки в списке как единое целое. Например, если ищется строка "Вася" и она есть, то функция вернёт её порядковый номер (нумерация с нуля).
IndexOfName() осуществляет парсинг, т.е. она рассматривает строки, состоящие из трёх элементов: Name = Value. Поиск ведётся только по идентификатору до знака равенства (Name). |