|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
![]() ![]() Inscription : novembre 1999 Messages : 1 002 ![]() |
Bonjour,
Je vous propose un nouvel élément à télécharger : Jeu des points à relier. Thèmes abordés :
|
|
|
20
|
|
|
#2 |
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 687 ![]() |
Excellent exemple, très pédagogique. On peut imaginer une multitude de variations sur la base de ce code.
Je trouve particulièrement intéressante l'utilisation du fichier XML. J'ai découvert à cette occasion ce format que je ne connaissais que de nom : ça m'a tout de suite plu. Merci aux auteurs ! A propos de fichiers, qu'en est-il des fichiers .txt ? Actuellement a-t-on la possibilité de les utiliser ?
__________________
L'Art est long et le Temps est court. |
|
|
00
|
|
|
#3 | ||
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 423 ![]() |
Flash n'est pas prévu pour...mais il plus ou moins possible de le faire
le programme ci-dessous affiche son propre source dans un TextField. cependant, les accents sont interprétés comme de l'UTF8 et les #13#10 provoquent deux passages à la ligne. Maintenant, si le fichier texte est en UTF8 avec des retours à la ligne Unix ça fonctionnera. Code :
__________________
Developpez.com: Mes articles, forum FlashPascal Entreprise: Execute SARL Produits : UPnP, RemoteOffice, FlashPascal Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5% |
||
|
20
|
|
|
#4 |
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 687 ![]() |
Merci pour le code et les explications.
__________________
L'Art est long et le Temps est court. |
|
|
00
|
|
|
#5 | ||
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 687 ![]() |
En jouant avec ton code, je suis retombé sur une difficulté que j'avais déjà rencontrée. Mettons que je veuille supprimer tous les 'a' du texte qui va s'afficher. La ligne que j'ai mise en commentaire me fait obtenir un message d'erreur. Est-ce que c'est un bug ou est-ce que c'est mon code qui n'est pas bon ?
Code :
__________________
L'Art est long et le Temps est court. |
||
|
|
00
|
|
|
#6 |
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 423 ![]() |
les deux mon capitaine
alors t.Text[i] := ... n'est pas acceptable, tu peux modifier la propriété "Text" mais pas un caractère de celle-ci. ça reviendrait à lire, modifier puis réécrire la propriété Text: string en une seule opération...remarque pourquoi pas...mais non Sous Delphi tu ne peux pas non plus écrire Edit1.Text[1] := 'z'...mais tu peux faire un if Edit1.Text[1] = 'z' tu extrais un caractère de la chaîne lue...ça marche. d'autre part, tu peux ne pas affecter une chaîne vide à un caractère pour le supprimer. la syntaxe Pascal serait Delete(s, i, 1)...mais elle n'est pas supportée par FlashPascal pour l'instant.
__________________
Developpez.com: Mes articles, forum FlashPascal Entreprise: Execute SARL Produits : UPnP, RemoteOffice, FlashPascal Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5% |
|
00
|
|
|
#7 | ||||
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 687 ![]() |
Citation:
Code :
Citation:
J'imagine que la procedure Delete() fait à peu près la même chose que le code ci-dessus : elle refait toute la chaîne en déplaçant les éléments. Cette fois je crois que c'est rentré.
__________________
L'Art est long et le Temps est court. |
||||
|
|
10
|
|
|
#8 |
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 423 ![]() |
t'as tout compris
et j'aime beaucoup ton temp := temp, on sait jamais
__________________
Developpez.com: Mes articles, forum FlashPascal Entreprise: Execute SARL Produits : UPnP, RemoteOffice, FlashPascal Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5% |
|
00
|
|
|
#9 |
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 687 ![]() |
Autrement j'aurais bien aimé apprendre à utiliser les fichiers XML. J'ai lu et relu ton exemple. Je vois le principe mais j'ai du mal à passer à l'application. Le format lui-même est ce qu'il y a de plus simple, mais les formules pour accéder au contenu du fichier sont assez lourdes. Code :
with TXMLPoint(n.childNodes[0].attributes) do ![]() Si tu pouvais écrire un exemple encore plus facile, ce serait bien.
__________________
L'Art est long et le Temps est court. |
|
|
00
|
|
|
#10 | ||
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 423 ![]() |
ok
personnellement je déteste les fichiers XML ok, donc l'objet XML est le point de départ, il est lui-même un XMLNode et en possède les méthodes et propriétés. chaque élément entre <> du fichier XML sera un XMLNode XMLNode.nodeName te permet d'avoir le texte entre les <> justement. XMLNode.firstChild est le premier élément entre <node> et </node> XMLNode.childNodes.length te donne le nombre de ces éléments XMLNode.childNodes[i] est le ième élément donc si on reprend le fichier Code :
il possède deux enfants (childNodes.length = 2) XML.firstChild.childNodes[0] est le noeud 'lines' XML.firstchild.childNodes[1] est le noeud points ces deux noeuds possèdent une série d'enfants qui sont sous la forme abrégée <node/> qui correspond à <node></node> quand il n'y a rien entre les deux. ces noeuds ont par contre des attributs. Sous ActionScript2 qui n'est pas fortement typé, on peut écrire "childNodes[i].attributes.x1" pour lire l'attribut x1 du noeud. En flash Pascal "attributes" est un TObject qui ne possède donc aucune propriété...d'où le transtypage en TXMLLigne qui n'est jamais instancié mais qui donne les membres attendus. Attention cependant, je vois que pour TXMLLigne j'ai déclaré des Integer, en fait c'est faux, ce sont des string...sauf que ça ne pose pas de problème à flash dans ce cas particulier car on les utilise directement dans des paramètres de type Number et flash fait tout seule la conversion. pour TXMLPoint j'ai par contre déclaré des string et j'utilise StrToInt (qui est un alias de parseInt) pour les convertir en nombre, sinon l'opération "x + 18" concatène "18" au nombre placé dans x. 10 devient dont "1018" et non 28. Pourquoi ce comportement ? tout simplement parce que Flash considère que l'attribut est un string; et un string + un entier (ce qui n'est pas autorisé en FlashPascal) se traduit par une concaténation de chaînes. En indiquant dans FlashPascal que x est un string, on est obligé de passer par StrToInt qui forcera la conversion, sinon - peu importe ce que considère FlashPascal - Flash estime que c'est un string. je ne sais pas si j'ai été clair, mais quoi qu'il en soit, il faut déclarer les classes permettant de lire "attributes" uniquement avec des string.
__________________
Developpez.com: Mes articles, forum FlashPascal Entreprise: Execute SARL Produits : UPnP, RemoteOffice, FlashPascal Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5% |
||
|
10
|
|
|
#11 | |
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 687 ![]() |
Citation:
Je m'en vais écrire un exemple pour retenir tout cela.
__________________
L'Art est long et le Temps est court. |
|
|
|
00
|
|
|
#12 | ||||
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 687 ![]() |
J'ai enfin écrit un code qui fonctionne. Si comme moi vous aimez bien les exemples "ras des pâquerettes", vous aimerez sans doute celui-ci.
Je suis parti d'un fichier xml que j'avais trouvé dans ce tutoriel. Code :
Code :
__________________
L'Art est long et le Temps est court. |
||||
|
|
00
|
|
|
#13 |
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 423 ![]() |
avec nodeValue peut-être ?
__________________
Developpez.com: Mes articles, forum FlashPascal Entreprise: Execute SARL Produits : UPnP, RemoteOffice, FlashPascal Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5% |
|
00
|
|
|
#14 | ||||
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 687 ![]() |
Avec nodeValue en effet, et avec cette explication trouvée dans un tutoriel :
Code :
Code :
__________________
L'Art est long et le Temps est court. |
||||
|
|
20
|
Copyright © 2000-2013 - www.developpez.com