Here's the resulting code:
Code: Select all
Global temp.s=GetTemporaryDirectory()+"Hex Data.bin"
Debug temp
Macro CreateHexByte(value)
WriteByte(0,(value))
Debug "%"+Str((value))+" ($"+Hex((value))+")"
a=0
EndMacro
Procedure CreateHexFile(*s.string)
Protected a,b,c
If CreateFile(0,temp,#PB_Ascii)
Repeat
c=PeekA(*s)
If c : c|$20 : EndIf
*s+SizeOf(Character)
Select c
Case '0' To '9'
If a
CreateHexByte(b<<4+c-'0')
Else
a=#True
b=c-'0'
EndIf
Case 'a' To 'f'
If a
CreateHexByte(b<<4+c-'W')
Else
a=#True
b=c-'W'
EndIf
Case ' ',',','$',#CR,#LF,#Null
If a
CreateHexByte(b)
EndIf
Default
Debug "ERROR '"+Chr(c)+"'"
c=#Null
*s=#Null
EndSelect
Until c=#Null
CloseFile(0)
Else
*s=#Null
EndIf
ProcedureReturn Bool(*s)
EndProcedure
s.s=GetClipboardText()
Debug CreateHexFile(@s)