Supprimer une balise

eCGec68 - Modifié par NHenry le 22/08/2015 à 23:29
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 - 23 août 2015 à 17:41
Bonjour,

J ai beau chercher comment résoudre mon problème.
Je m'explique j'ai dans unn fichier html une balise comme ceci <span id="navcaption">Sélectionner une catégorie</span>
et dans mon programme j'aimerais la supprimer

avec cette procedure je n'y arrive pas :

function SearchBal( const S, Src: string): Integer;
    var
        LnS     : Integer;
        LnSrc   : Integer;
        I, J    : Integer;
        PS      : PChar;
        PSrc    : PChar;
        FindStr : Boolean;
    begin
        Result := -1;
        LnS := Length(S);
        LnSrc := Length(Src);
        PS := PChar(S);
        PSrc := PChar(Src);
        I := 0;
        while I < LnSrc do
        begin
            if PSrc^ = PS^ then
            begin
                FindStr := True;
                J := 0;
                while J < LnS do
                begin
                    if PSrc^ <> PS^ then
                    begin
                        FindStr := False;
                        Break;
                    end;
                    Inc(PSrc);
                    Inc(PS);
                    Inc(I);
                    Inc(J);
                end;
                PS := @S[1];
                if FindStr then
                begin
                    Result := I;
                    Break;
                end;
            end
            else
            begin
                Inc(PSrc);
                Inc(I);
            end;
        end;
    end;


Merci pour votre aide

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

1 réponse

Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
23 août 2015 à 17:41
Salut,

effectivement avec ce bout de code tu n'y arriveras pas ! ;)

essaye ceci:
{******************************************************************************}
{******************************************************************************}
uses StrUtils; {Indispensable pour PosEx}
function DeleteMidStr(const  SLeft, SRight, S: string;
                      const IncludeTags: Boolean = True):  string;
var
  PosLeft, PosRight: Integer;
begin
  Result := S;
  PosLeft := Pos(SLeft, S);
  if  PosLeft < 1 then  Exit;
  PosRight :=  PosEx(SRight, S, PosLeft + Length(SLeft));
  if PosRight  < 1 then Exit;
  if IncludeTags then
    Inc(PosRight, Length(SRight))
  else
    Inc(PosLeft, Length(SLeft));
  Result := Copy(S, 1, PosLeft-1) + Copy(S, PosRight, High(Integer));
end;
{******************************************************************************}
{******************************************************************************}


procedure Tfrm_FDCMain.Button1Click(Sender: TObject);
const
  aStr = 'juste un tex<span id="navcaption">Sélectionner une catégorie</span>te pour tester la chose';
begin
  // supprime le texte balises comprises
  Memo1.Lines.Add(DeleteMidStr('<span id="navcaption">', '</span>', aStr));
  // supprime le texte entre les balises
  Memo1.Lines.Add(DeleteMidStr('<span id="navcaption">', '</span>', aStr, False));
end;


voilà ... ceci devrait répondre à tes attentes.
0
Rejoignez-nous