Print / PrintN with Flag #PB_Ascii / #PB_UTF8 / #PB_Unicode
Posted: Fri Jan 19, 2018 3:25 pm
http://www.purebasic.com
https://www.purebasic.fr/english/
Code: Select all
Procedure _Print(Text.s, Format.i)
If (Text)
Protected Bytes.i, *Mem
If (Format = #PB_Default)
CompilerIf (#PB_Compiler_Unicode)
Format = #PB_Unicode
CompilerElse
Format = #PB_Ascii
CompilerEndIf
EndIf
Select (Format)
Case #PB_Ascii
Bytes = StringByteLength(Text, #PB_Ascii)
*Mem = AllocateMemory(Bytes)
If (*Mem)
PokeS(*Mem, Text, -1, #PB_Ascii | #PB_String_NoZero)
EndIf
Case #PB_UTF8
Bytes = StringByteLength(Text, #PB_UTF8)
*Mem = AllocateMemory(Bytes)
If (*Mem)
PokeS(*Mem, Text, -1, #PB_UTF8 | #PB_String_NoZero)
EndIf
Case #PB_Unicode
Bytes = StringByteLength(Text, #PB_Unicode)
*Mem = AllocateMemory(Bytes)
If (*Mem)
PokeS(*Mem, Text, -1, #PB_Unicode | #PB_String_NoZero)
EndIf
EndSelect
If (*Mem)
WriteConsoleData(*Mem, Bytes)
FreeMemory(*Mem)
EndIf
EndIf
EndProcedure
Macro Print(Text, Format = #PB_Default)
_Print(Text, (Format))
EndMacro
Macro PrintN(Text, Format = #PB_Default)
CompilerIf (#PB_Compiler_OS = #PB_OS_Windows)
Print(Text + #CRLF$, (Format))
CompilerElse
Print(Text + #LF$, (Format))
CompilerEndIf
EndMacro