ClassHelper pro TStrings

vložil Jaro Beneš 20. března 2012 22:58

Jedná se o helper pro TStrings, umožňuje lepší IndexOf() s ohledem na velká-malá písmenka a také i částečné vyhledávání. V nejnovějších Delphi to určitě už je, ale někomu by se to mohlo hodit.

Pozn (editora): berte to jako inspiraci pro použití Class helpers - je to moc užitečná fíčurka

{*******************************************************}
{                                                       }
{       Strings helper for IndexOf enhacenment          }
{                                                       }
{       Copyright © 2004 Jaro.Benes                   }
{                                                       }
{*******************************************************}

unit jbStringsHelper;
//designed in Delphi 2005, free use for general purpose
interface

uses
  Windows, Classes, SysUtils;

type
  TStringsHelper = class helper for TStrings
  public
    {case sensitive version of indexof}
    function AnsiIndexOf(const AString: string): Integer; overload; inline;
    function AnsiIndexOf(const AString: string; Idx: Integer): Integer; 
overload; inline;
    {like as indexof but can search substring}
    function IndexOfSubString(const SubString: string): Integer; overload; inline;
    {like as indexof but can search substring on next occurence}
    function IndexOfSubString(const SubString: string; Idx: Integer): Integer;
 overload; inline;
  end;

implementation

function TStringsHelper.AnsiIndexOf(const AString: string): Integer;
begin
  Result := AnsiIndexOf(AString, 0);
end;

function TStringsHelper.AnsiIndexOf(const AString: string; 
 Idx: Integer): Integer;
var
  i: Integer;
begin
  if (Count > 0) and (Idx <= (Count - 1)) then
    for i := Idx to Count - 1 do
      if AnsiCompareStr(AString, Strings[i]) = 0 then
        begin
          Result := i;
          Exit;
        end;
  Result := -1;
end;

function TStringsHelper.IndexOfSubString(const SubString: string): Integer;
begin
  Result := IndexOfSubString(SubString, 0);
end;

function TStringsHelper.IndexOfSubString(const SubString: string; 
   Idx: Integer): Integer;
var
  i: integer;
begin
  if (Count > 0) and (Idx <= (Count - 1)) then
    for i := Idx to Count - 1 do
      if Pos(Uppercase(SubString), Uppercase(Strings[i])) > 0 then
        begin
          Result := i;
          Exit;
        end;
  Result := -1;
end;

end.

Tagy: ,

Rozšíření Delphi

Komentování ukončeno

Naše nabídka

MVP
Ing. Radek Červinka - Embarcadero MVP
profil na linkedin, Twitter:@delphicz

Nabízím placené poradenství a konzultace v oblasti programování a vývoje SW.
Dále nabízíme i vývoj speciálního software na zakázku.

Neváhejte nás kontaktovat (i ohledně reklamy).

love Delphi

O Delphi.cz

Delphi je moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64, Mac OSX, Linux a na iPhone a Android.

Delphi.cz je nezávislý portál pro uživatele Delphi. Portál není koncipován pro úplné začátečníky, i když i ti se zde nebudou nudit, ale spíše na programátory, kteří již něco znají a chtějí své znalosti dále rozvíjet a sledovat novinky.

Poslední komentáře

Comment RSS

Dle měsíců