Thema: Delphi Schleifen-Problem

Einzelnen Beitrag anzeigen

Tommy1988
(Gast)

n/a Beiträge
 
#9

Re: Schleifen-Problem (While)

  Alt 16. Nov 2007, 21:09
Folgendes Problem:
angenommen ich gebe folgenden html code ins memo ein:
<a href="">

aber lasse das </a> weg.

=> ich möchte gerne in DIESEM falle ab ">" bis zum nächsten "<" gehen. ist ein
"<" gefunden, soll hinter ">" ein "</a>" eingefügt werden.

Das klappt ja eigentlich auch, wenn es nicht nur so blöd wäre, dass immer weiter </a>'s hinzugefügt werden.

Delphi-Quellcode:
function SearchaEndTag(s: string): string;
var
  iPos, iNext: Integer;
begin
  iPos := 1;
  repeat
    iNext := PosEx('<a', s, iPos);
    if iNext = 0 then Break;
    iPos := PosEx('>', s, iNext);
    if iPos = 0 then Break;
    if Copy(s, Pred(iPos)+2, 4) <> '</a>then
      Insert('</a>', s, iPos+1);
  until iPos > Length(s);
  Result := s;
end;
bei dem von mir angepassten code ist das problem, wenn hinter dem ">" irgentein buchstabe, also nicht ein "</a" kommt, ein "</a" hinzugefügt wird.

Ich habs schon mit schleifen versucht aber klappt leider nicht.

wie kann ich am dem ersten ">" (also das hier: <a href="">)
überprüfen, ob danach nicht irgentwo ein "</a>" kommt?
also dass eventuelle buchstaben nach dem ersten ">" ignoriert werden.

oder, dass alle nach dem ersten ">" eventuellen buchstaben ignoriert werden, bis zum
nächsten "<" vom neuen tag gesucht wird, und DANN das "</a>" eingefügt wird
  Mit Zitat antworten Zitat