Je mets à jour le script DVDPOST.BE et je touche au but, toutefois j'ai un problème avec l'utilisation de HTMLDecode(). Cela ne fonctionne simplement pas du tout. J'ai fouillé d'autres scripts et sur la toile. Rien. Quelles erreurs aurais-je commises?
Ou trouver de l'info?
Comment utiliser HTMLDecode()?
Bonjour,
C'est utilisé dans beaucoup de scripts, donc a priori ça fonctionne... il faudrait des détails : comment est-il utilisé, et un exemple de chaîne non décodée.
Il modifie la variable passée en paramètre, donc appel genre :
HTMLDecode(s);
après appel, les entités HTML trouvées dans "s" sont converties.
if CanSetField(fieldLanguages) And (Languages <> '') then
begin
SetField(fieldLanguages, formatTitre(Languages,GetOption('Casse Choisie')));
end;
if CanSetField(fieldSubtitles) And (Subtitles <> '')then
begin
SetField(fieldSubtitles, formatTitre(Subtitles,GetOption('Casse Choisie')));
end;
3 Exemple de résultat non copiable par copié-collé:
... Alors que la page d'accueil est en iso-8859-1 ... ... bref
Il faudrait utiliser la fonction UTF8Decode(Value: string): string; sur ta chaine Line, Balise ou bien Value ... du genre :
J'ai remplacé mes HTMLDecode par des UTF8Decode, j'ai supprimé les HTMLRemoveTags pas nécessaires et celà ne change malheureusement rien et ne semble provoquer aucune erreur. Quelles autres possibilités pourrais-je envisager?
Si je bidouille assez bien en programmation (UNIX et ses outils, Assembleur, C, Basics divers) et n'ai pas trop de difficultés avec Pascal, j'avoue ne pas m'y retrouver dans ces normes que tu sembles maîtriser.
player_one wrote:J'ai remplacé mes HTMLDecode par des UTF8Decode, j'ai supprimé les HTMLRemoveTags pas nécessaires et celà ne change malheureusement rien et ne semble provoquer aucune erreur. Quelles autres possibilités pourrais-je envisager?
Tu as essayé le UTF8Decode sur la valeur Value comme je l'ai ennoncé plus haut et ça ne corrige pas ton problème de caractère ? ... ... humm ... bizarre
Upload ton fichier *.ifs en l'état sur un serveur quelconque, histoire qu'on puisse jeter un oeil.
player_one wrote:Si je bidouille assez bien en programmation (UNIX et ses outils, Assembleur, C, Basics divers) et n'ai pas trop de difficultés avec Pascal, j'avoue ne pas m'y retrouver dans ces normes que tu sembles maîtriser.
Tu dois t'adresser à antp là, parce que moi je maîtrise rien du tout ...
Pour l'UTF8, le mieux serait de faire le UTF8Decode sur l'ensemble de la page récupérée (issue de GetPage/PostPage donc), comme ça tu ne dois plus le faire sur chaque variable traitée.
Sinon en effet il faudrait un exemple précis de ce qui ne fonctionne pas.
antp wrote:Pour l'UTF8, le mieux serait de faire le UTF8Decode sur l'ensemble de la page récupérée (issue de GetPage/PostPage donc), comme ça tu ne dois plus le faire sur chaque variable traitée.
Perso, j'évite de traiter toute une page car j'ai remarqué que ça avait tendance à sérieusement ralentir voir coincer, planter tout le process. Mais bon, c'est peut être dû a mes petites configs matériel sur lesquelles AMC tourne.
Voici la partie que je n'ai pas modifiée (sauf HTMLDecode --> UTF8Decode)
C'est la partie qui prépare le "Tree" de sélection.
//------------------------------------------------------------------------------
// CREATION DE LA LISTE DE RESULTAT
//------------------------------------------------------------------------------
procedure afficheResultat(title : String);
var
StartPos: Integer;
couple, titre, adresse : String;
begin
if (GetOption('Type de Lancement') = 0) or (GetOption('Type de Lancement') = 1) then
begin
PickTreeClear;
PickTreeAdd('Films trouvés pour ' + title + ' :', '');
for i:=0 to listeResultat.Count-1 do
begin
couple := listeResultat.GetString(i);
titre := copy(couple,0,pos('|',couple)-1);
delete(couple, 1, length(titre)+1);
UTF8Decode(titre);
adresse := copy(couple,0,length(couple));
delete(couple, 1, length(adresse)+1);
PickTreeAdd(titre, adresse);
end;
if listeResultat.Count = 1 then
begin
recupInfo(adresse);
exit;
end;
begin
if PickTreeExec(Address)=true then
begin
recupInfo(Address);
end;
end;
end else if (GetOption('Type de Lancement') = 2) then
begin
if listeResultat.Count = 1 then
begin
couple := listeResultat.GetString(0);
titre := copy(couple,0,pos('|',couple)-1);
delete(couple, 1, length(titre)+1);
UTF8Decode(titre);
adresse := copy(couple,0,length(couple));
delete(couple, 1, length(adresse)+1);
recupInfo(adresse);
exit;
end else
begin
trouveTitle(title);
end;
end;
end;
En résultat de la requête [pere noel] choisie pour son tréma sur le e de noël mais que je n'ai pas écrit, j'obtiens un affichage codé de l'accentuation française.
Malheureusement je ne puis pas faire de copié-coler sur le résultat affiché du "Tree".
Je veux bien communiquer mon travail puisque "open source", mais il n'est pas encore complètement achevé et j'aimerais l'optimaliser davantage.
player_one wrote:Je veux bien communiquer mon travail puisque "open source", mais il n'est pas encore complètement achevé et j'aimerais l'optimaliser davantage.
Un peu galère de travailler sur un bout de code sans pouvoir l'exécuter, mais bon ... Vite fait, ce que je vois, c'est que t'as pas fait comme je disais , l'écriture de la fonction n'est pas bonne ... Exemple
Ah oui mince ça en effet j'avais pas précisé que UTF8Decode renvoie la valeur traitée alors que HTMLDecode modifie la variable (je sais, ça paraît pas logique... et ça ne l'est pas )
Le détail des fonctions se trouve dans l'aide (infos techniques -> scripts, ou quelque chose du genre)
Merci pour l'effort et félicitations pour le résultat.
Dans ta première intervention je n'avais pas relevé qu'UTF8Decode fonctionne comme une fonction et pas comme une procédure. Ce n'était pas marqué sur son front! Mea culpa et encore bravo pour ta clairvoyance, ta perspicacité. Dans les scripts que j'ai visités cette erreur semble assez répandue.
Je fais un break d'une vingtaine de jours, et je reviens vous visiter.
Merci aussi à antp pour l'attention et son invention qui a mis de l'ordre dans ma vidéothèque....