begin process at 2010 07 30 09:58:03
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Texte

 > CONVERTIR LES CODE HTML EN CARACTÈRES SPÉCIAUX

CONVERTIR LES CODE HTML EN CARACTÈRES SPÉCIAUX


 Information sur la source



 Description

Voici le complément à la source poster par Japee :
http://www.delphifr.com/codes/CONVERTIR-CARACTERE S-SPECIAUX-CODE-HTML_27193.aspx

J'ai volontairement donné le titre opposé.

Bien sur il est sans doute possible d'améliorer le code (cela ne fait que 4 semaines que je me suis mis à DELPHI.

J'espère qu'il vous servira au temps que le source de Japee m'a était util...

Source

  • function HtmlToText(S:String):String;
  • var
  • i, index, compteur :integer;
  • Stmp, coupe : String;
  • begin
  • Result := '';
  • compteur := 0;
  • for i:=1 to Length(S) do
  • begin
  • if i < compteur then continue;
  • if ((S[i] = '&') and (S[(i + 1)] = '#')) then
  • begin
  • index := (i + 2);
  • coupe := copy(s, index, Length(S));
  • compteur := Pos(';', coupe);
  • coupe := copy(coupe, 0, compteur - 1);
  • Stmp := char(StrToInt(coupe));
  • compteur := compteur + index;
  • end
  • else
  • Stmp := S[i];
  • Result := Result + Stmp;
  • end;
  • end;
function HtmlToText(S:String):String;
var
  i, index, compteur :integer;
  Stmp, coupe : String;
begin
  Result := '';
  compteur := 0;
  for i:=1 to Length(S) do
  begin
    if i < compteur then continue;
    if ((S[i] = '&') and (S[(i + 1)] = '#')) then
    begin
      index := (i + 2);
      coupe := copy(s, index, Length(S));
      compteur := Pos(';', coupe);
      coupe := copy(coupe, 0, compteur - 1);
      Stmp :=  char(StrToInt(coupe));
      compteur := compteur + index;
    end
    else
      Stmp := S[i];

    Result := Result + Stmp;
  end;
end;

 Conclusion

N'hésitez pas à me faire part de vos remarque (sans être trop méchant)...

Bon Dév à tous


 Sources de la même categorie

Source avec Zip COMBINAISONS DE STRINGS par askil2000
Source avec Zip Source avec une capture RECONNAISSANCE DE CARACTÈRES (OCR) par Bacterius
Source avec Zip Source avec une capture NETTOYAGE AUTOMATIQUE DE NOMS DE FICHIERS par John Dogget
DISTANCE DE JARO-WINKLER par PoulpHunter
Source avec Zip BASE DE DONNÉE WIKI par thithony

 Sources en rapport avec celle ci

Source avec Zip WEB-BUILDER par numeror86
Source avec Zip Source avec une capture VFONTS : OUTIL DE VISUALISATION DES POLICES CARACTÈRES INSTA... par bluemandfr
Source avec Zip Source avec une capture EDITER HTML AVEC TEMBEDDEDED + 2 DEMOS par MAURICIO
DATE EN ARABE par AITFRAH1
Source avec Zip Source avec une capture CONVERTIR LES CARACTÈRES SPÉCIAUX EN CODE HTML [TEXT TO HTML... par japee

Commentaires et avis

Commentaire de japee le 09/10/2007 15:22:06 administrateur CS

Salut svendeville.

Je suis à la fois flatté et désolé que tu fasses référence à un si vieux code que je n'ai pas dépoussiéré depuis que je l'ai posté, il y a bientôt 3 ans...

Bon, 2 ou 3 choses :

Quand j'ai posté le mien, la rubrique Snippet n'existait pas, et le mien comme le tien y seraient plus à leur place.

Il vaut mieux déclarer une variable string en constante quand on la passe en paramètre (si l'on n'a pas besoin de la modifier bien sûr), on y gagne en efficacité. Tu noteras que je ne l'avais pas fait sur mon code, ce qui est un exemple tout à fait déplorable pour les nouvelles générations de Delphistes. Faut dire à ma décharge que je programmais pas depuis ben longtems à c't' époque...

Il faut éviter les instructions "Continue" et "Break" dans une boucle, sauf cas particulier et évident.

Je pense que tu aurais eu intérêt à utiliser plutôt une boucle repeat ou while étant donné que l'incrémentation de l'index dans la chaîne à parcourir n'est pas régulière. Tu aurais ainsi pu faire l'économie de quelques variable.

Voici comment j'aurais fait, en essayant de respecter ton approche :

function HtmlToText2(const S: string): string;
var
  Index: Integer;
  STmp: string;
  L: Integer;
begin
  Result := '';
  Index := 1;
  while Index < Length(S) + 1 do
  begin
    if (S[Index] = '&') and S[(Index + 1)] = '#') then
    begin
      STmp :=  Copy(S, Index, 6);
      L := Pos(';', STmp);
      STmp := Char(StrToInt( Copy(STmp, 3, L - 3) ));
      Inc(Index, L)
    end
    else
    begin
      STmp := S[Index];
      Inc(Index);
    end;
    Result := Result + STmp;
  end;
end;

Quoi qu'il en soit, je t'encourage à persévérer, c'est plutôt pas mal pour 4 semaines de prog' au compteur.

A plus.

japee

Commentaire de japee le 09/10/2007 15:51:39 administrateur CS

Ah oui, autre chose...

Ta fonction ne pourra être utilisé que si le texte html a été codé selon un procédé identique à celui que j'utilise.

Et ensuite, dans mon code, il vaut mieux écrire :

STmp := Char(StrToIntDef(Copy(STmp, 3, L - 3), 63));

...on ne sait jamais.

Commentaire de svendeville le 11/10/2007 09:25:33

Salut Japee,

Merci pour tes commentaires et conseils, je confirme que mon code ne pourra être utilsé que si on utilise ta fonction pour convertir en html, c'est justement en ce sens que je l'ai pensé.
En fait nous développons une appli dont l'iterface est entirement faite en français, et pour faire le traduction, j'ai créé en delphi un exctracteur qui vas récupèrer les chaines de cette appli, et pour que les traducteur puissent travailler corectement, je génére un fichier au standard XLIFF, ce qui m'oblige à convertir tous les caractères spéciaux (Là j'utilise ton code), après traduction, je doit reconvertir dans l'appli corectement en texte, donc, j'ai fait cette fonction en contrepartie de la tienne.
Je vais suivre tes conseils pour la boucle et les variables et constantes, et je vais également mettre la source sur la rubrique Snippet.

Encore merci à toi.
Bonne continuation.

Commentaire de wari le 07/01/2008 08:07:57

Salut les programmeurs,
je né pas encore tester ce code mais en premiere vue
ce que je comprent pas, est que vous utilisez un argument s : string en entrée, les chane de ce type ne dépasse pas les 256 caractères.
mm si vous voulez utilisé cette fct ligne par ligne dans un text HTML, je pense qu'il ya des code HTML ou les ligne dépasse largement les  256 caractères, pk ne pas utiliser un mémo par expmple.

cordialement

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Couleur [ par Shadow ] Salut, je voudrai mettre une couleur comme fond sur ma form mais la couleur c un code html alors je veux savoir si je peux utiliser un code html ?moi Code HTML avec WebBrowser [ par PowerII ] Slt,cmt je pourrais faire pour récupérer le code HTML d'une page chargée ds un WebBrowser et le mettre ds un string ou un memo???...Merci caractères spéciaux [ par sisi231 ] SISI231Bonjour !Y'aurait-il un API Windows pour taper dans le tedit ou le Tmemo qui a le focus un caractère spécial (par exemple le a accent aigu) et Grrr... les 4260 caractères. [ par stailer ] Bonjour tout le monde !Voila un problème qui me fait bien rager aujourd'hui !J'ai un champ memo dans lequel j'obtiens du code html automatiquement.Se tdbgrid et caractères spéciaux [ par sisi231 ] Bonjour , Je voudrais savoir comment intégrer un caractère spécial dans la case en cours du tdbgrid1 à l'emplacement du curseur quand l'utilisateu Ajout de chaînes de caractères [ par zmc ] Bonsoir, en fait j'aimerais ajouter des caractères à un endroit donné d'un Memo. Par exemple le code entré dans le memo "Code ASP" serait ajouté entre Code HTML dans un memo [ par propa ] Bonjour, je suis débutant en delphi et j'ai un soucis concernant la récupération du code HTML d'une page dans un memo.J'utilise WebBrowser1.OleObject. Comment on converti un RichEdit en code HTML? [ par thoreycity ] Bonjour, je voudrais convertir un RichEdit (avec des mises en formes, gras, couleur...) en code html. Connaîssez vous un composant pour le faire? Ou p aider moi a convertir des doc et xls en html [ par kingstdz2004 ] Bonjourje cherche les command ole automation pour convertir des fichier word *.doc et excel *.xls en format htmlsous delphi 5.0 aider moi svpet repond Je cherch vraiment des pro [ par jobtunisieyasser ] Salut les amisje cherche un interpréteur de code htmlou un éditeur de de code html en outre une source ou un composant qui traduit la mise en page en


Nos sponsors


Sondage...

CalendriCode

Juillet 2010
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,733 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales