Encoder une chaine en alphabet Radio
Et voilà, après lecture de cet article, j’ai voulu transformer ce code en PureBasic.
;@link http://j-reaux.developpez.com/tutoriel/asp/alphabet-radio-code-morse/index.php EnableExplicit ;{ Alphabet AlphaRadio ;- Structures Structure S_AlphaRadio car_normal.s car_alpharadio.s EndStructure ;- Constantes #Dim_AlphaRadio_Size = 81 #AlphaRadio_Separateur = " " ;-Tableaux Global Dim Dim_AlphaRadio.S_AlphaRadio(#Dim_AlphaRadio_Size+1) ;- Datasections DataSection Char_Normal: Data.s "0","1","2","3","4","5","6","7","8","9" Data.s "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" Data.s "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","Z","Y","Z" Data.s ",","."," ","?","'","!","/","(",")","&",":",";","=","+","-","_",Chr(34),"$","@","€" Char_AlphaRadio: Data.s"Zero","One","Two","Three","Four","Five","Six","Seven","Eight","Nine" Data.s"alpha","bravo","charlie","delta","echo","foxtrot","golf","hotel","india","juliet","kilo","lima","mike","november","oscar","papa","quebec","romeo","sierra","tango","uniform","victor","whisky","x-ray","yankee","zulu" Data.s"ALPHA","BRAVO","CHARLIE","DELTA","ECHO","FOXTROT","GOLF","HOTEL","INDIA","JULIET","KILO","LIMA","MIKE","NOVEMBER","OSCAR","PAPA","QUEBEC","ROMEO","SIERRA","TANGO","UNIFORM","VICTOR","WHISKY","X-RAY","YANKEE","ZULU" Data.s"Decimal","Stop","|","?","'","!","/","(",")","&",":",";","=","+","-","_",Chr(34),"$","@","€" EndDataSection ;-Fonctions Procedure.s RemoveAccent(sString.s) sString = ReplaceString(sString, "Á", "A") sString = ReplaceString(sString, "Â", "A") sString = ReplaceString(sString, "Ã", "A") sString = ReplaceString(sString, "Ä", "A") sString = ReplaceString(sString, "Å", "A") sString = ReplaceString(sString, "Ç", "C") sString = ReplaceString(sString, "È", "E") sString = ReplaceString(sString, "É", "E") sString = ReplaceString(sString, "Ê", "E") sString = ReplaceString(sString, "Ë", "E") sString = ReplaceString(sString, "Ì", "I") sString = ReplaceString(sString, "Í", "I") sString = ReplaceString(sString, "Î", "I") sString = ReplaceString(sString, "Ï", "I") sString = ReplaceString(sString, "Ò", "O") sString = ReplaceString(sString, "Ó", "O") sString = ReplaceString(sString, "Ô", "O") sString = ReplaceString(sString, "Õ", "O") sString = ReplaceString(sString, "Ö", "O") sString = ReplaceString(sString, "Ù", "U") sString = ReplaceString(sString, "Ú", "U") sString = ReplaceString(sString, "Û", "U") sString = ReplaceString(sString, "Ü", "U") sString = ReplaceString(sString, "Ý", "Y") sString = ReplaceString(sString, "à", "a") sString = ReplaceString(sString, "á", "a") sString = ReplaceString(sString, "â", "a") sString = ReplaceString(sString, "ã", "a") sString = ReplaceString(sString, "ä", "a") sString = ReplaceString(sString, "å", "a") sString = ReplaceString(sString, "ç", "c") sString = ReplaceString(sString, "è", "e") sString = ReplaceString(sString, "é", "e") sString = ReplaceString(sString, "ê", "e") sString = ReplaceString(sString, "ë", "e") sString = ReplaceString(sString, "ì", "i") sString = ReplaceString(sString, "í", "i") sString = ReplaceString(sString, "î", "i") sString = ReplaceString(sString, "ï", "i") sString = ReplaceString(sString, "ð", "o") sString = ReplaceString(sString, "ò", "o") sString = ReplaceString(sString, "ó", "o") sString = ReplaceString(sString, "ô", "o") sString = ReplaceString(sString, "õ", "o") sString = ReplaceString(sString, "ö", "o") sString = ReplaceString(sString, "ù", "u") sString = ReplaceString(sString, "ú", "u") sString = ReplaceString(sString, "û", "u") sString = ReplaceString(sString, "ü", "u") sString = ReplaceString(sString, "ý", "y") sString = ReplaceString(sString, "ÿ", "y") ProcedureReturn sString EndProcedure ProcedureDLL Init_AlphaRadio() Protected Inc.l Restore Char_Normal For Inc = 0 To #Dim_AlphaRadio_Size Read.s Dim_AlphaRadio(Inc)\car_normal Next Restore Char_AlphaRadio For Inc = 0 To #Dim_AlphaRadio_Size Read.s Dim_AlphaRadio(Inc)\car_alpharadio Next EndProcedure ProcedureDLL.s Encode_AlphaRadio(sString.s) Protected sStringEncoded.s, sChar.s Protected lInc.l, lIncA.l sString = RemoveAccent(sString) sStringEncoded = "" For lInc = 0 To Len(sString) -1 sChar = Mid(sString, lInc + 1, 1) For lIncA = 0 To #Dim_AlphaRadio_Size If Dim_AlphaRadio(lIncA)\car_normal = sChar sStringEncoded + Dim_AlphaRadio(lIncA)\car_alpharadio + #AlphaRadio_Separateur Break EndIf Next Next ProcedureReturn sStringEncoded EndProcedure ProcedureDLL.s Decode_AlphaRadio(sString.s) Protected lInc.l Protected sStringDecoded.s sStringDecoded = sString For lInc = 0 To #Dim_AlphaRadio_Size sStringDecoded = ReplaceString(sStringDecoded, Dim_AlphaRadio(lInc)\car_alpharadio+" ", Dim_AlphaRadio(lInc)\car_normal) Next ProcedureReturn sStringDecoded EndProcedure ;} Define.s sInitial, sEncoded.s, sDecoded.s Init_AlphaRadio() sInitial = "C'est l'idée à 2€ !" sEncoded.s = Encode_AlphaRadio(sInitial) sDecoded = Decode_AlphaRadio(sEncoded) Debug sInitial Debug sEncoded Debug sDecoded
Ajouter un commentaire