1
0

HEX$に桁数指定できるようにした

This commit is contained in:
otya128
2015-08-23 13:03:57 +09:00
parent c712ab8958
commit 009c6deb61
3 changed files with 27 additions and 3 deletions

View File

@@ -32,6 +32,7 @@ ASSERT__ VAL("aa")==0, "VAL"
ASSERT__ RAD(180)==PI(), "RAD"
ASSERT__ DEG(RAD(180)), "DEG"
ASSERT__ HEX$(65535, 8)=="0000FFFF", "HEX$"
ASSERT__ SUBST$("0123456789",0,"B")=="B","SUBST$"
ASSERT__ SUBST$("0123456789",0,4,"B")=="B456789","SUBST$"
ASSERT__ SUBST$("",0,4,"B")=="B","SUBST$"

View File

@@ -365,10 +365,25 @@ class BuiltinFunction
{
return val.to!wstring;
}
static wstring HEX(int val)
static wstring HEX(int val, DefaultValue!(int, false) digits)
{
//ひどい
return val.to!string(16).to!wstring;
import std.format;
if(digits.isDefault)
{
//ひどい
return val.to!string(16).to!wstring;
}
if(digits > 8)
{
throw new OutOfRange();
}
FormatSpec!char f;
f.spec = 'X';
f.flZero = true;
f.width = cast(int)digits;
auto w = appender!wstring();
formatValue(w, val, f);
return cast(immutable)(w.data);
}
static void SPSET(PetitComputer p, int id, int defno)
{

View File

@@ -64,6 +64,14 @@ class TypeMismatch : SmileBasicError
super("Type mismatch");
}
}
class OutOfRange : SmileBasicError
{
this()
{
this.errnum = 10;
super("Out of range");
}
}
class OutOfDATA : SmileBasicError
{
this()