Sample code for 30+ languages & platforms
DataFlex

ZATCA Decode QR Code

See more ZATCA Examples

Decodes a base64 ZATCA QR code.

Note: This example requires Chilkat v9.5.0.92 or greater.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    String sQr
    Handle hoBd
    Integer iIndex
    Integer iExpectedTag
    Integer iTag
    Integer iLen
    String sTagValue

    Move False To iSuccess

    // Note: This example requires Chilkat v9.5.0.92 or greater.

    Move "ARdBaG1lZCBNb2hhbWVkIEFMIEFobWFkeQIPMzAwMDc1NTg4NzAwMDAzAxQyMDIyLTAzLTEzVDE0OjQwOjQwWgQHMTEwOC45MAUFMTQ0LjkGLCtiQTFtdWNWSTY3SDRXQ2JOL2U5SjJxVXBIVHQzVHdNZHhsa09XVGVvdjg9B2BNRVlDSVFDWWg1ZTNpcklxV2w1WXRhQ25LaXVqTUlUbW9rWFlPUE1wSURDSW9XVzc5d0loQU1YbWMrTUZIR3RhZUJzZU91RUdUbHdENmcwOWdOUVBSUHVZODlzNjVPV1MIWDBWMBAGByqGSM49AgEGBSuBBAAKA0IABNMAr2WtNWSj2uSrplhxz0cNFk/hv1LjMDgqbthcn6ydNWEuTNTQeyZJf1SfyMOFFM4cMpp+3wL+65Rj3fi+4w0JSDBGAiEAlcAzHKujzvjHJrAV1M/79RnYRqe66kmtgMUykr/N/CACIQDgTQwbfftw0pYo6FX8c63Q4edvFgt+7JhHaBlla0qRtQ==" To sQr

    Move "AQxGaXJveiBBc2hyYWYCCjEyMzQ1Njc4OTEDEzIwMjEtMTEtMTcgMDg6MzA6MDAEBjEwMC4wMAUFMTUuMDAGLDlmc3JYVW8rU3BYQVlJTkw5aGFLU2dEOXgxaVJsZk53SVBDZnBlWXczYTA9B1hYMEM4VjFIL3hUMGdOaytWWXh2U2Z6UFJlUjZPM2t5VXA0TERITzJLMzlNSGJETXVvTGltQSt3RnovV2pVdEdMSHpaK0J5enNmWUdEQzliNUFGSU1FQT09CFgwVjAQBgcqhkjOPQIBBgUrgQQACgNCAARw3B+mu14x0h3pJFKqEWWT7DmD7jWYkZV7qHyikPlN4P/4/b7YD+A9wnFI92HTKm+/BGKXVf/pfLtsmdIIaPHnCUgwRgIhAMTjOkWwcNu5Aw5k1Yr3YgbPhdxKoJV1a3+5ShPtx1/IAiEAyrwsA/NuqV6XjybyrZpMp6eJAqslACLfCldti/PVOQs=" To sQr

    Get Create (RefClass(cComChilkatBinData)) To hoBd
    If (Not(IsComObjectCreated(hoBd))) Begin
        Send CreateComObject of hoBd
    End
    Get ComAppendEncoded Of hoBd sQr "base64" To iSuccess

    Move 0 To iIndex
    Move 1 To iExpectedTag

    While (iExpectedTag <= 9)

        // Get the tag
        Get ComGetByte Of hoBd iIndex To iTag
        If (iTag <> iExpectedTag) Begin
            Showln "Expected tag " iExpectedTag
            Procedure_Return
        End

        Move (iIndex + 1) To iIndex
        Get ComGetByte Of hoBd iIndex To iLen
        If (iLen = 0) Begin
            Showln "Expected length > 0"
            Procedure_Return
        End

        Move (iIndex + 1) To iIndex
        // Tags 8 and 9 contain binary data.
        If (iExpectedTag >= 8) Begin
            Get ComGetEncodedChunk Of hoBd iIndex iLen "base64" To sTagValue
        End
        Else Begin
            Get ComGetTextChunk Of hoBd iIndex iLen "utf-8" To sTagValue
        End

        Showln "tag " iTag ": " sTagValue

        Move (iIndex + iLen) To iIndex
        Move (iExpectedTag + 1) To iExpectedTag
    Loop



End_Procedure