Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

[CODE MORSE] ENCODE/DECODE SANS $REPLACE


Information sur la source

Catégorie :AddOns Niveau : Initié Date de création : 26/11/2004 Date de mise à jour : 29/11/2004 14:30:29 Vu : 5 055

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
salut à vous,
donc il s'agit d'un addon pour "encoder" et "decoder" du language Morse (langage utilisé il y a bien longtemp pour les telegrammes, ancetre de nos telephones mobile..blablabla...)
 

Source

  • dialog morse {
  • title "Le code Morse [Encode/Decode]"
  • size -1 -1 171 118
  • option dbu
  • text "Texte normal :", 1, 2 2 36 8
  • edit "", 2, 1 10 169 40, disable multi return vsbar
  • text "Texte Morse :", 3, 2 57 35 8
  • text "", 4, 3 50 167 8, disable
  • edit "", 5, 1 65 169 40, disable multi return vsbar
  • button "ok", 6, 114 107 23 9, default
  • button "no", 7, 140 107 23 9, cancel
  • radio "Norm", 11, 80 108 25 8
  • radio "Morse", 12, 51 108 25 8
  • text "• By Mrud •", 8, 5 108 41 8, disable
  • }
  • on 1:dialog:morse:*:*:{
  • if ($devent = init) {
  • did -a $dname 4 $str($chr(151),33)
  • }
  • if ($devent = sclick) {
  • if ($did = 6) {
  • if ($did(11).state) && ($did(2).text) { did -r $dname 5
  • var %i 1 | while (%i <= $did($dname,2).lines) {
  • if ($did(morse,2,%i).len) { did -ema $dname 5 $sMorse($did($dname,2,%i)) $+ $iif($did(morse,2,$calc(%i +1)).len,$crlf) }
  • inc %i } }
  • if ($did(12).state) && ($did(5).text) { did -r $dname 2
  • var %i 1 | while (%i <= $did($dname,5).lines) {
  • if ($did(morse,5,%i).len) { did -ema $dname 2 $sMorse($did($dname,5,%i)) $+ $iif($did(morse,5,$calc(%i +1)).len,$crlf) }
  • inc %i } }
  • }
  • if ($did = 11) && ($did(11).state) { did -ne $dname 2 | did -mb $dname 5 }
  • if ($did = 12) && ($did(12).state) { did -ne $dname 5 | did -mb $dname 2 }
  • }
  • }
  • alias sMorse { $iif($left($1,1) = . || $left($1,1) = -,return $sDmor($1),return $sEmor($1)) }
  • alias sDmor {
  • var %dmorse .-,a,-...,b,-.-.,c,-..,d,.,e,..-.,f,--.,g,....,h,..,i,.---,j,-.-,k,.-..,l,--,m,-.,n,---,o,.--.,p,--.-,q,.-.,r,...,s,-,t,..-,u,...-,v,.--,w,-..-,x,-.--,y,--..,z,.----,1,..---,2,...--,3,....-,4,.....,5,-.....,6,--...,7,---..,8,----.,9,-----,0,.-.-.-,.,-..-.,/,.-.-.,+,.----.,',-....-,-,-...-,=,---...,:,-.-.-.,;,.-..-.,",.-.-..,§,...-..-,$,..--.-,_,..--..,?,.--.-,à,-.-..,ç,.-..-,è,..-..,é
  • var %i 1 | while (%i <= $numtok($1,32)) {
  • var %o 1 | while (%o <= $calc($numtok(%dmorse,44)/2)) {
  • if ($gettok($1,%i,32) = $gettok(%dmorse,$calc((%o *2)-1),44)) { var %rez $instok(%rez,$gettok(%dmorse,$calc(%o *2),44),0,0) } | inc %o }
  • if (%i = $numtok($1,32)) { return %rez } | inc %i }
  • }
  • alias sEmor {
  • var %emorse a,.-,b,-...,c,-.-.,d,-..,e,.,f,..-.,g,--.,h,....,i,..,j,.---,k,-.-,l,.-..,m,--,n,-.,o,---,p,.--.,q,--.-,r,.-.,s,...,t,-,u,..-,v,...-,w,.--,x,-..-,y,-.--,z,--..,1,.----,2,..---,3,...--,4,....-,5,.....,6,-.....,7,--...,8,---..,9,----.,0,-----,.,.-.-.-,/,-..-.,+,.-.-.,',.----.,-,-....-,=,-...-,:,---...,;,-.-.-.,",.-..-.,§,.-.-..,$,...-..-,_,..--.-,?,..--..,à,.--.-,ç,-.-..,è,.-..-,é,..-..
  • var %i 1 | while (%i <= $len($1)) {
  • var %o 1 | while (%o <= $calc($numtok(%emorse,44)/2)) {
  • if ($mid($1,%i,1) = $gettok(%emorse,$calc((%o *2)-1),44)) { var %rez $instok(%rez,$gettok(%emorse,$calc(%o *2),44),0,32)) } | inc %o }
  • if (%i = $len($1)) { return %rez } | inc %i }
  • }
dialog morse {
  title "Le code Morse [Encode/Decode]"
  size -1 -1 171 118
  option dbu
  text "Texte normal :", 1, 2 2 36 8
  edit "", 2, 1 10 169 40, disable multi return vsbar
  text "Texte Morse :", 3, 2 57 35 8
  text "", 4, 3 50 167 8, disable
  edit "", 5, 1 65 169 40, disable multi return vsbar
  button "ok", 6, 114 107 23 9, default
  button "no", 7, 140 107 23 9, cancel
  radio "Norm", 11, 80 108 25 8
  radio "Morse", 12, 51 108 25 8
  text "• By Mrud •", 8, 5 108 41 8, disable
}
on 1:dialog:morse:*:*:{
  if ($devent = init) {
    did -a $dname 4 $str($chr(151),33)
  }
  if ($devent = sclick) {
    if ($did = 6) { 
      if ($did(11).state) && ($did(2).text) { did -r $dname 5 
        var %i 1 | while (%i <= $did($dname,2).lines) {
          if ($did(morse,2,%i).len) { did -ema $dname 5 $sMorse($did($dname,2,%i)) $+ $iif($did(morse,2,$calc(%i +1)).len,$crlf) }
      inc %i } }
      if ($did(12).state) && ($did(5).text) { did -r $dname 2 
        var %i 1 | while (%i <= $did($dname,5).lines) {
          if ($did(morse,5,%i).len) { did -ema $dname 2 $sMorse($did($dname,5,%i)) $+ $iif($did(morse,5,$calc(%i +1)).len,$crlf) }
      inc %i } }
    }
    if ($did = 11) && ($did(11).state) { did -ne $dname 2 | did -mb $dname 5 }
    if ($did = 12) && ($did(12).state) { did -ne $dname 5 | did -mb $dname 2 }
  }
}
alias sMorse { $iif($left($1,1) = . || $left($1,1) = -,return $sDmor($1),return $sEmor($1)) }
alias sDmor {
  var %dmorse .-,a,-...,b,-.-.,c,-..,d,.,e,..-.,f,--.,g,....,h,..,i,.---,j,-.-,k,.-..,l,--,m,-.,n,---,o,.--.,p,--.-,q,.-.,r,...,s,-,t,..-,u,...-,v,.--,w,-..-,x,-.--,y,--..,z,.----,1,..---,2,...--,3,....-,4,.....,5,-.....,6,--...,7,---..,8,----.,9,-----,0,.-.-.-,.,-..-.,/,.-.-.,+,.----.,',-....-,-,-...-,=,---...,:,-.-.-.,;,.-..-.,",.-.-..,§,...-..-,$,..--.-,_,..--..,?,.--.-,à,-.-..,ç,.-..-,è,..-..,é  
  var %i 1 | while (%i <= $numtok($1,32)) {
    var %o 1 | while (%o <= $calc($numtok(%dmorse,44)/2)) {
    if ($gettok($1,%i,32) = $gettok(%dmorse,$calc((%o *2)-1),44)) { var %rez $instok(%rez,$gettok(%dmorse,$calc(%o *2),44),0,0) } | inc %o }
  if (%i = $numtok($1,32)) { return %rez } | inc %i }
}
alias sEmor {
  var %emorse  a,.-,b,-...,c,-.-.,d,-..,e,.,f,..-.,g,--.,h,....,i,..,j,.---,k,-.-,l,.-..,m,--,n,-.,o,---,p,.--.,q,--.-,r,.-.,s,...,t,-,u,..-,v,...-,w,.--,x,-..-,y,-.--,z,--..,1,.----,2,..---,3,...--,4,....-,5,.....,6,-.....,7,--...,8,---..,9,----.,0,-----,.,.-.-.-,/,-..-.,+,.-.-.,',.----.,-,-....-,=,-...-,:,---...,;,-.-.-.,",.-..-.,§,.-.-..,$,...-..-,_,..--.-,?,..--..,à,.--.-,ç,-.-..,è,.-..-,é,..-..
  var %i 1 | while (%i <= $len($1)) { 
    var %o 1 | while (%o <= $calc($numtok(%emorse,44)/2)) {
    if ($mid($1,%i,1) = $gettok(%emorse,$calc((%o *2)-1),44)) { var %rez $instok(%rez,$gettok(%emorse,$calc(%o *2),44),0,32)) } | inc %o }
  if (%i = $len($1)) { return %rez } | inc %i }
}

Conclusion

j'ai pas utiliser de $replace donc je pens que c'est interessant.. non ?
niveau : initié, je ne pens pas qu'un debutant en mirc puisse comprendre le code, il fera que le pomper. Donc voilà.
 

Historique

26 novembre 2004 11:58:03 :
un simpe caractere mal placé.
29 novembre 2004 14:30:32 :
j'ai sup "ê" et j'ai corriger une erreur pour le "é"

Commentaires et avis

signaler à un administrateur
Commentaire de loadation le 26/11/2004 13:22:22

y fallai y pense lol

signaler à un administrateur
Commentaire de PaDa le 26/11/2004 13:32:05

s'interdire $replace c'est du vice, d'autant que c'est pas très dur a émuler le $replace, c'est juste que c'est très chiant a coder...
sinon j'aime bien :))))

signaler à un administrateur
Commentaire de SornDrixer le 26/11/2004 17:49:59 administrateur CS

L'idée est original, et c'est bien codé.

Une petite remarque :

while (%i <= $did($dname,5).lines)

Il est déconseillé de faire appel à un identifieur dans la condition d'une boucle, car à chaque boucle, il va devoir aller chercher sa valeur.
Donc stock $did($dname,5).lines dans une var
Dans ce code là, la perte de vitesse est très très minime, mais dans un code plus lourd, c'est à éviter.

Bonne continuation

signaler à un administrateur
Commentaire de Asthar le 27/11/2004 20:25:11

Inutile certes, le code morse ayant été abandonné, mais néanmoins joliment codé =)
8/10

signaler à un administrateur
Commentaire de skotmarud le 29/11/2004 14:36:39

SornDrixer je savais pas que ça pouvait ralentir le code :/ merci du conseil !

Et merci pour tout vos cmt ;)

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Janvier 2009
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 BAÏSE, 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
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.