Meantime, here's a few procedures I find very useful:
Code: Select all
Procedure.b CompilationIsTest()
prog.s = ProgramFilename()
prog = GetFilePart(prog)
prog = LCase(prog)
If FindString(prog,"purebasic",0)
If FindString(prog,"compilation",0)
ProcedureReturn #True
EndIf
EndIf
EndProcedure
Macro IsBetween(num,a,b)
(num>a And num<b)
EndMacro
Macro IsContained(num,a,b)
(num=>a And num<=b)
EndMacro
Procedure.d Beat(a.d,b.d)
If a>b
ProcedureReturn a
Else
ProcedureReturn b
EndIf
EndProcedure
Procedure.d Defeat(a.d,b.d)
If a<b
ProcedureReturn a
Else
ProcedureReturn b
EndIf
EndProcedure
Macro DefeatThis(a,b)
a = Defeat(a,b)
EndMacro
Macro BeatThis(a,b)
a = Beat(a,b)
EndMacro
Procedure.d Centrify(span.d,object.d)
If span=object
ProcedureReturn 0
EndIf
outer.d = Beat(span,object)
inner.d = Defeat(span,object)
ProcedureReturn (outer/2)-(inner/2)
EndProcedure
Procedure.s StrB(int.i,capitalise.b=#False)
If int=0
ProcedureReturn ByteTruth(#False,capitalise)
Else
ProcedureReturn ByteTruth(#True,capitalise)
EndIf
EndProcedure
Procedure.b ValB(t.s)
t = LCase(t)
Select t
Case "true", "1", "yes"
ProcedureReturn #True
Default
ProcedureReturn #False
EndSelect
EndProcedure
Procedure.b ReverseByte(byte.b)
If byte
ProcedureReturn #False
Else
ProcedureReturn #True
EndIf
EndProcedure
Procedure.i RandomRGB(minlevel.w,maxlevel.w)
r = Random(maxlevel-minlevel)+minlevel
g = Random(maxlevel-minlevel)+minlevel
b = Random(maxlevel-minlevel)+minlevel
ProcedureReturn RGB(r,g,b)
EndProcedure