Apr 10

For in в Delphi

Мало кто знает (и еще меньше, кто использует) о такой замечательной конструкции в Delphi (начиная с Delphi 2005), как for..in.

А зря. Вот простой пример. Как можно перебрать значения в TStringList. Например так:

procedure DoStringList(AList: TStringList);

var

Idx: Integer;

begin

for Idx := 0 to High(AList) do

ShowMessage(AList[Idx]);

end;

Не сложно, но можно проще ;) :

procedure DoStringListNew(AList: TStringList);

var

lStr: string;

begin

for lStr in AList do

ShowMessage(lStr);

end;

Правда ведь, намного приятнее и понятнее.

Вот еще пара примеров:

var

lStr: string;

lCh: Char;

lCount: Integer;

begin

lStr := 'Delphist.ru - заходите в гости';

lCount := 0;

for lCh in lStr do

if lCh = ' ' then Inc(lCount);

ShowMessage('Количество пробелов: ' + IntToStr(lCount));

end;

А вот, например, перебор компонентов:

var
lComp: TComponent;
lStr: string;
begin
lStr := '';
for lComp in Self do
begin
if lStr <> '' then
lStr := lStr + sLineBreak;
lStr := lStr + lComp.Name;
end;
ShowMessage(lStr);
end;

Так что, изучайте, ищите новые возможности в новых версиях и ваш код будет намного проще и понятнее.

П.С. В поисках халявы в Интернете? Заходите на форум posulka.com - здесь представленная лучшая вещевая халява в Сети! Куртки, рюкзаки, футболки, флэшки, диски, ручки - все это Вы можете заказать на нашем форуме абсолютно бесплатно. Халява есть халява!!!


  1. GN
     Add karma Subtract karma  +0
    Цитировать.

    Конструкция “For in” и правда очень удобная, например вот так

    var
    Kompon: TComponent;

    begin

    for Kompon in Self do
    if Kompon is TEdit then
    TEdit (Kompon).Text := Trim (TEdit (Kompon).Text);

    end;

    можно удалить пробелы во всех компонентах TEdit.

    1

Поделитесь вашими мыслями

Поддерживаемые теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>