Convertisseur d'ascii en $chr (et inverse)

Contenu du snippet

Voila, ce n'est pas la première source que je réalise mais c'est la première que je poste ! A force de voir des sources sur les ASCII j'ai eu l'idée de faire un petit dialog qui convertirait directement un caractère en chr et vice-versa, vous entrez un caractère et sa valeur s'affiche, l'inverse fonctionne aussi. Je ne pense pas avoir déjà vu ça quelque part, si toutefois c'était le cas désolé. Je suis sur qu'il est possible d'améliorer ce code et de le simplifier c'est pourquoi je compte sur vos conseils :)
Je sais aussi que les codes sur les ASCII sont des codes "déjà vus" mais j'avais tout de même envie de poster ma source, bien que pas très originale.

Source / Exemple :


dialog BS.ascii {
  title "Fast ASCII"
  size -1 -1 127 59
  option dbu
  edit "", 1, 12 8 23 13, limit 1 center
  edit "", 2, 88 8 23 13, limit 3 center
  text "< ASCII", 4, 37 11 22 8
  text "CHR >", 5, 70 11 18 8
  button "-", 6, 19 26 10 9, flat
  button "+", 7, 95 26 10 9, flat
  button "Table", 8, 36 32 27 12, flat
  button "Effacer", 9, 62 32 27 12, flat
  button "Inserer", 10, 0 47 37 12, flat
  button "Fermer", 11, 90 47 37 12, flat ok
  text "by BSmax", 12, 51 52 25 8, disable center
}
alias bsa { if (!$dialog(BS.ascii)) { dialog -m BS.ascii BS.ascii } }
on *:dialog:BS.ascii:*:*:{
  if ($devent == init) { did -b $dname 10 }
  elseif ($devent == edit) {
    if ($did(1).text) { did -e $dname 10 }
    else { did -b $dname 10 }
    if ($did == 1) { did -ra $dname 2 $asc($did($did).text) }
    elseif ($did == 2) { did -ra $dname 1 $chr($did($did).text) }
  }
  elseif ($devent == sclick) {
    if ($did == 6) {
      var %x $did(2).text
      if (!%x) { var %x 1 }
      if (%x >= 1) {
        if (%x > 1) { var %z $calc(%x - 1) }
        else { var %z 1 }
        did -ra $dname 2 %z
        did -ra $dname 1 $chr(%z)
        did -e $dname 10
      }
    }
    elseif ($did == 7) {
      var %x $did(2).text
      if (!%x) { var %x 1 }
      if (%x <= 255) {
        var %z $calc(%x + 1)
        did -ra $dname 2 %z
        did -ra $dname 1 $chr(%z)
        did -e $dname 10
      }
    }
    elseif ($did == 8) {
      var %n @Fast'ASCII
      if ($window(%n)) { window -c %n }
      window %n
      aline %n »»»»»»»»»»»»»»» ( 2Table de caractères 4ASCII )  «««««««««««««««
      aline %n $chr(160)
      var %a 1
      while (%a < 256) { aline %n 12[ $+ $iif($len(%a) == 1,00 $+ %a) $+ $iif($len(%a) == 2,0 $+ %a) $+ $iif($len(%a) == 3,%a) $+ ] --->3 $chr(%a) | inc %a }
    }
    elseif ($did == 9) {
      if ($window(@Fast'ASCII)) { window -c @Fast'ASCII }
      did -ra $dname 1,2
      did -b $dname 10
    }
    elseif ($did == 10) { editbox -af $editbox($active) $+ $did(1).text }
  }
}
menu * {
Fast'ASCII:bsa
}

Conclusion :


Petit bug au niveau du bouton "Inserer" qui n'est pas toujours actif quand il le faut :s
Autrement je ne pense pas voir d'autres problèmes.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.