>************************************************************* >* HECK.PRG >* A little wrapper around George Tasker class >* for automatic translation back and forth >************************************************************* >**** Author of this piece: Nick Neklioudov >LPARAMETERS tcText >* You can explicitly pass your text as a parameter, or the program automatically picks >* the clipboard content >IF empty(tcText) > tcText = ALLTRIM(_CLIPTEXT) >ENDIF >IF empty(tcText) > RETURN >ELSE && Strip out possible CRLF so the class code doesn't bomb > tcText = STRTRAN(STRTRAN(tcText,CHR(13)," "),CHR(10),"") >ENDIF >LOCAL loHeck >loHeck = createobject("hexwords") >*Place the result to the clipboard >IF UPPER(LEFT(tcText, 2)) = "0X" > _CLIPTEXT = loHeck.HexToWord(tcText) >ELSE > _CLIPTEXT = loHeck.WordToHex(tcText) >ENDIF >* show the result in WAIT WINDOW >WAIT WINDOW _cliptext NOWAIT >RETURN >***** End of Nick's code >***** Author: George Tasker >DEFINE CLASS HexWords AS CUSTOM > FUNCTION WordToHex > LPARAMETER tcWord > LOCAL lni, lnlast, lcresult, lcchar, lnchar > lcresult = "" > lnlast = LEN(tcWord) > FOR lni = 1 TO lnlast > lcchar = SUBSTR(tcWord, lni, 1) > lcresult = lcresult + RIGHT(TRANSFORM(ASC(lcchar), "@0"), 2) > NEXT > lcresult = "0x" + lcresult > RETURN lcresult >ENDFUNC > FUNCTION HexToWord > LPARAMETER tcHex > LOCAL lni, lnlast, lcresult, lcHex, lnchar > lcresult = "" > lcHex = SUBSTR(tcHex, 3) > lnlast = LEN(lcHex) > FOR lni = 1 TO lnlast STEP 2 > lnchar = EVALUATE('0x' + SUBSTR(lcHex, lni, 2)) > lcresult = lcresult + CHR(lnchar) > NEXT > RETURN lcresult >ENDFUNC >ENDDEFINE
DEFINE CLASS HexWords AS CUSTOM >> >> FUNCTION WordToHex >> >> LPARAMETER tcWord >> >> LOCAL lni, lnlast, lcresult, lcchar, lnchar >> lcresult = "" >> lnlast = LEN(tcWord) >> FOR lni = 1 TO lnlast >> lcchar = SUBSTR(tcWord, lni, 1) >> lcresult = lcresult + RIGHT(TRANSFORM(ASC(lcchar), "@0"), 2) >> NEXT >> lcresult = "0x" + lcresult >> RETURN lcresult >> ENDFUNC >> >> FUNCTION HexToWord >> >> LPARAMETER tcHex >> >> LOCAL lni, lnlast, lcresult, lcHex, lnchar >> lcresult = "" >> lcHex = SUBSTR(tcHex, 3) >> lnlast = LEN(lcHex) >> FOR lni = 1 TO lnlast STEP 2 >> lnchar = EVALUATE('0x' + SUBSTR(lcHex, lni, 2)) >> lcresult = lcresult + CHR(lnchar) >> NEXT >> RETURN lcresult >> ENDFUNC >>ENDDEFINEI've gotta stop hanging around with Koziol.< bg >