Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Anfängerfrage - Mehere Zeilen auslesen

  Alt 24. Jan 2008, 06:11
Herzlich willkommen in der Delphi-PRAXiS, gerry22.

Ich sehe da einen Standardanwendungsfall für einen Zustandsautomaten.

Delphi-Quellcode:
const
  S_KEY1 = 'Schlüsselwort 1';
  S_KEY2 = 'Schlüsselwort 2';
  S_KEY3 = 'Schlüsselwort 3';

type
  TTransformState = (xsWait1, xsWait2, xsWait3);

procedure Transform(sIn, sOut: TStrings; const keywords: array of string);
var
  xs: TTransformState;
  i: Integer;
begin
  xs := xsWait1;
  Assert(Length(keywords) = 3);
  sOut.BeginUpdate;
  sOut.Clear;
  for i := 0 to Pred(sIn.Count) do
    case xs of
      xsWait1: // wait for keyword 1
      begin
        Inc(xs, Ord(AnsiContainsText(sIn[i], keywords[Ord(xs)])));
        if xs = xsWait2 then
          sOut.Add(sIn[i]);
      end;
      xsWait2: // wait for keyword 2
      begin
        Inc(xs, Ord(AnsiContainsText(sIn[i], keywords[Ord(xs)])));
      end;
      xsWait3: // wait for keyword 3
        if AnsiContainsText(sIn[i], keywords[Ord(xs)])
          then xs := xsWait1
          else sOut.Add(sIn[i]);
    end;
  sOut.EndUpdate;
end;

// Test: Transform(Memo1.Lines, Memo2.Lines, [S_KEY1, S_KEY2, S_KEY3]);
Freundliche Grüße
  Mit Zitat antworten Zitat