Einzelnen Beitrag anzeigen

mashutu

Registriert seit: 15. Nov 2007
195 Beiträge
 
#32

Re: bis zu einem bestimmten zeichen suchen?

  Alt 15. Nov 2007, 21:28
Zitat von shadow999:
Angenommen im Memo stehen folgende Buchstaben wie folgt:
A
B
C
DE
F
GH
I
J

Dann möchte ich bei "DE" anfangen zu suchen. Wenn er dann bis auf GH stößt, soll er aufhören.
Also da drum gehts eigentlich, das Suchen von einer bestimmten stelle im text bis zu einer bestimmten stelle.
[untested ON]
Delphi-Quellcode:
function foo(sl:TStringList;AStart,AStop:String):tStringList; //result is NIL if nothing found
var
  sTmp : string;
  i,j,k : integer;
begin
  result:=TStringList.Create; //optimistic version
  i:=0;
  while i<sl.count do
  begin
    sTmp:=sl[i]; //analyze a line
    k:=pos(AStart,sTmp); //is there anything we are looking for?

    if k>0 then
    begin //start found
      j:=i; //keep this for next search
      i:=sl.count; //more elegant than exit
      result.add(copy(sTmp,k,length(sTmp)); //include this into the result
    end;
    
    inc(i); //next line
  end; //of while construct

  if result.count>0 then //did we find a start
  begin
    i:=j;
    while i<sl.count do
    begin
      sTmp:=sl[i];
      k:=pos(AStop,sTmp);

      if k>0 then
      begin
        i:=sl.count; //exit this while construct
        result.add(copy(sTmp,1,k+length(AStop)-1); //
      end
      else
        result.add(sTmp);
    
      inc(i);
    end;//while
  end//AStart found
  else//otherwise we do not deliver any result
     FreeAndNil(result);
end;

Wenn Du nur ein Ergebnis haben willst, falls das Ende auch gefunden wurde muesstest Du noch zwei Zeilen einfuegen.
Hab das ganze jetzt nur mal schnell so hingetippert, weil ich auf diesem Rechner kein Delphi habe.
Es geht sicherlich eleganter/effizienter, aber das sollte auch einigermassen erlaeutern, was zu tun ist.
utu

if it was hard to write it should be hard to read
  Mit Zitat antworten Zitat