Debalise.PASGetStrBalised.PAS
procedure TForm1.HTML_DebaliserExecute(Sender: TObject);
var s, t: string;
begin
t := Memo1.Text;
s := GetStrBalised(Memo1.Text, '<', '>', True); // Inclut les Balises
while length(s) > 0 do Begin
t := ReplaceText(t, s, '');
s := GetStrBalised(t, '<', '>', True);
End;
Memo1.Text := t;
end;
Function GetStrBalised(Texte, BLeft, BRight: string; IncludingBalises: Boolean = false): string;
var
Pos_Debut, Longueur: integer;
s: string;
begin
{ Si pas de balise de début => Début = debut de texte }
if pos(BLeft, Texte) <= 0 then
Pos_Debut := 1
else
Pos_Debut := pos(BLeft, Texte) + length(BLeft);
Longueur := PosEx(BRight, Texte, Pos_Debut) - Pos_Debut;
iF (Pos_Debut <> 0) And (Longueur <> 0) Then
s := Copy(Texte, Pos_Debut, Longueur)
else
s := '';
{ Si incorpore un saut de ligne => annule l'expression }
if pos(#10 + #13, s) > 0 then
s := '';
{ Avec ou sans les balises }
if (IncludingBalises = true) and (length(s) > 0) then
result := BLeft + s + BRight
else
result := s;
end;