目次

メッセージ行生成

 IchigoJamのBasicでは、文字定数を扱えないので
 各文字を16進数に変換して入力します。



 Windowsで手軽に変換できるようにHSPで変換アプリ
 ケーションソフトを作成しました。



 左の上下入力欄に、文字、スペース、数字を入力し
 「CONVERT」ボタンをクリックすると、右側に変換
 されたBasicコードが表示されます。上下入力欄の
 最大入力文字数は16に制限しています。

 「CLEAR」ボタンをクリックすると、左右の文字列を
 消去します。

 右側のBasicコードを、コピーして希望の行番号の
 位置に入れます。


 HSPのソースコードは、以下。

; screen size
screen 0,640,140

title "convert string to hexadecimal numbers"
; set buffer size
sdim buf0,16
sdim buf1,16
sdim bufx,160
sdim head0,9
sdim head1,9
sdim stmp,64

buf0 = "" 
buf1 = "" 
bufx = "" 
head0 = "LET [ 1]"
head1 = "LET [  ]"
objmode 2

; define message box
font "", 18
pos   5, 5 : input  buf0,200,25,16 ; Object Number 0
pos   5,35 : input  buf1,200,25,16 ; Object Number 1
pos 220, 5 : mesbox bufx,400,60,4  ; Object Number 2

; define button
font "", 10
pos 10, 70 : button "CONVERT",*btnCnv
pos 10,100 : button "CLEAR"  ,*btnClr

stop

*btnCnv
  ; upper
  xmax  = strlen(buf0)
  xlast = xmax-1
  xnext = xmax+1
  stmp = ""
  if (xmax > 0) {
    ; convert
    for x,0,xmax,1
      ; get 1 character
      tmp = peek(buf0,x)
      ; convert capital letter
      if ('a' <= tmp) & (tmp <= 'z') { tmp -= $20 }
      ; generate code
      xtmp = strf("#%02X,",tmp)
      if (x == xlast) { xtmp = strf("#%02X",tmp) }
      ; store strings
      poke stmp,4*x,xtmp
    next
  }
  ; substitute
  poke bufx,0,"LET [ 1],"
  ; append
  poke bufx,9,stmp
  ; add new line
  xlast = strlen(bufx)
  poke bufx,xlast,"\r\n"
  ; calculate appned location
  ptr = strlen(bufx)
  ; lower
  xmax  = strlen(buf1)
  xlast = xmax-1
  stmp = ""
  if (xmax > 0) {
    ; substitute
    xtmp = strf("LET [%2d],",xnext)
    poke bufx,ptr,xtmp
    ; convert
    for x,0,xmax,1
      ; get 1 character
      tmp = peek(buf1,x)
      ; convert capital letter
      if ('a' <= tmp) & (tmp <= 'z') { tmp -= $20 }
      ; generate code
      xtmp = strf("#%02X,",tmp)
      if (x == xlast) { xtmp = strf("#%02X",tmp) }
      ; store strings
      poke stmp,4*x,xtmp
    next
  }
  ; append
  xlast = strlen(bufx)
  poke bufx,xlast,stmp
  ; show
  objprm 2,bufx
  stop

*btnClr
  buf0 = ""  : objprm 0,buf0
  buf1 = ""  : objprm 1,buf1
  bufx = ""  : objprm 2,bufx
  stop


ダイナミックHMTL利用

 HSPは、インストールしていないと使えないので  javascriptでダイナミックHTMLを書きました。 <html> <head> <script language="javascript"> <!-- function getCode(x) { var i ; res = "" ; // copy stmp = x ; len = x.length ; nlen = len - 1 ; // loop for ( i = 0 ; i < len ; i++ ) { // get charactor code tmp = stmp.charCodeAt(i) ; res += tmp ; if ( i < nlen ) { res += "," ; } } return res ; } function clrArea() { document.genhex.elements[1].value = "" ; document.genhex.elements[2].value = "" ; document.genhex.elements[4].value = "" ; } function convertCode() { // get strings length ln = new Array(2); ln[0] = document.genhex.line0.value.length ; ln[1] = document.genhex.line1.value.length ; // judge strings length for ( i = 0 ; i < 2 ; i++ ) { if ( ln[i] > 16 ) { alert("Out of strings in line "+i); } } // convert if ( (0 < ln[0] && ln[0] < 17) && ln[1] < 17 ) { // clear ystr = "LET [ 1],"; // get strings edt0 = document.genhex.line0.value; xstr = getCode( edt0.toUpperCase() ); ystr = ystr + xstr ; // get strings if ( 0 < ln[1] ) { ystr += "\n"; ystr += ("LET ["+ String(ln[0]+1) +"],") ; edt1 = document.genhex.line1.value; xstr = getCode( edt1.toUpperCase() ); ystr = ystr + xstr ; } // show document.genhex.genhexs.value = ystr + "\n" ; } } // --> </script> </head> <body> <form method="post" name="genhex"> <input type="button" name="clear" value="clear" onClick="clrArea()"/><br> <div>Line_0<input type="text" name="line0" /></div> <div>Line_1<input type="text" name="line1" /></div> <input type="button" name="convert" value="convert" onClick="convertCode()"/><br> <div>decimal<br> <textarea name="genhexs" cols="80" rows="2"> </textarea> </div> </form> </body> </html>  ファイル名をconv.htmlとして、ハードディスクの  ディレクトリ(フォルダ)に保存。その後ブラウザ  にファイルをドラッグすると、起動します。  1行で最大16文字として、メッセージを入力します。  (必ず、上の1行から入力してください。   下は何も入力しないでも構いません。)  ボタン「convert」をクリックすると、文字に相当する  10進数の数値に変換します。  変換文字列は、クリップボードにコピーしてから  テキストエディタでファイルに保存できます。  ボタン「clear」のクリックで、入力と変換文字列を消去します。  終了するときには、ブラウザの「x」か「終了」を  クリックするだけ。  ブラウザの設定で「javascript」を利用できるように  指定してください。標準設定では、利用不可になって  いることがあります。

目次

inserted by FC2 system