HEX$に桁数指定できるようにした
This commit is contained in:
@@ -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$"
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user