NO.1002:0を加えて指定の桁に揃えた文字列を返すモジュール
FILE名:FILE_int2str_plus.hsp
・以下テストコード
#module // 数字に0を加えてp文字の数字にする #defcfunc int2str_plus int p,int value sdim s,16 sdim neg,16 s="" neg="" if value>=0{s+="+"} else{s+="-"} if p==0{logmes "int2str_plus内のerror。第一引数は1以上にしてください"} if p>=1{//10 mm=10 m=1 n=(value\mm)/m neg+=abs(n) } if p>=2{//100 gosub *on_div} if p>=3{//1000 gosub *on_div} if p>=4{//1 0000 gosub *on_div} if p>=5{//10 0000 gosub *on_div} if p>=6{//100 0000 gosub *on_div} if p>=7{//1000 0000 gosub *on_div} if p>=8{//1 0000 0000 gosub *on_div} if p>=9{//10 0000 0000 gosub *on_div} if p>=10{//100 0000 0000 m*=10 n=(value)/m neg+=abs(n)} if p>=11{logmes "int2str_plus内のerror。第一引数は10以下にしてください"} l=strlen(neg) repeat l poke s,(cnt+1),peek(neg,(l-1-cnt)) loop return s *on_div mm*=10 m*=10 n=(value\mm)/m neg+=abs(n) return // 数字に0を加えてp文字の数字の絶対値にする #defcfunc int2str_plus_abs int p,int value sdim ss,16 sdim neg,16 s="" neg="" if p==0{logmes "int2str_plus内のerror。第一引数は1以上にしてください"} if p>=1{//10 mm=10 m=1 n=(value\mm)/m neg+=abs(n) } if p>=2{//100 gosub *on_div} if p>=3{//1000 gosub *on_div} if p>=4{//1 0000 gosub *on_div} if p>=5{//10 0000 gosub *on_div} if p>=6{//100 0000 gosub *on_div} if p>=7{//1000 0000 gosub *on_div} if p>=8{//1 0000 0000 gosub *on_div} if p>=9{//10 0000 0000 gosub *on_div} if p>=10{//100 0000 0000 m*=10 n=(value)/m neg+=abs(n)} if p>=11{logmes "int2str_plus内のerror。第一引数は10以下にしてください"} l=strlen(neg) repeat l poke ss,cnt,peek(neg,(l-1-cnt)) loop logmes ss return ss #global |
・以下テストコード
#include"FILE_int2str_plus.hsp" s="-000123" mes str(int(s)) s="+000123" mes str(int(s)) a=-10 mes int2str_plus(0,a) mes int2str_plus(1,a) mes int2str_plus(2,a) mes int2str_plus(3,a) mes int2str_plus(4,a) mes int2str_plus(5,a) mes int2str_plus(6,a) mes int2str_plus(7,a) mes int2str_plus(8,a) mes int2str_plus(9,a) mes int2str_plus(10,a) b=123 mes int2str_plus(0,b) mes int2str_plus(1,b) mes int2str_plus(2,b) mes int2str_plus(3,b) mes int2str_plus(4,b) mes int2str_plus(5,b) mes int2str_plus(6,b) mes int2str_plus(7,b) mes int2str_plus(8,b) mes int2str_plus(9,b) mes int2str_plus(10,b) mes "" c=-1000000000 mes int2str_plus(10,c) a=-100 pos 320,0 mes int2str_plus_abs(0,a) mes int2str_plus_abs(1,a) mes int2str_plus_abs(2,a) mes int2str_plus_abs(3,a) mes int2str_plus_abs(4,a) mes int2str_plus_abs(5,a) mes int2str_plus_abs(6,a) mes int2str_plus_abs(7,a) mes int2str_plus_abs(8,a) mes int2str_plus_abs(9,a) mes int2str_plus_abs(10,a) b=1234 mes int2str_plus_abs(0,b) mes int2str_plus_abs(1,b) mes int2str_plus_abs(2,b) mes int2str_plus_abs(3,b) mes int2str_plus_abs(4,b) mes int2str_plus_abs(5,b) mes int2str_plus_abs(6,b) mes int2str_plus_abs(7,b) mes int2str_plus_abs(8,b) mes int2str_plus_abs(9,b) mes int2str_plus_abs(10,b) mes "" c=-1000000000 mes int2str_plus_abs(10,c) stop |