Sample code for 30+ languages & platforms
Visual FoxPro

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 Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL lcQr
LOCAL loBd
LOCAL lnIndex
LOCAL lnExpectedTag
LOCAL lnTag
LOCAL lnLen
LOCAL lcTagValue

lnSuccess = 0

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

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

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

loBd = CreateObject('Chilkat.BinData')
lnSuccess = loBd.AppendEncoded(lcQr,"base64")

lnIndex = 0
lnExpectedTag = 1

DO WHILE (lnExpectedTag <= 9)

    * Get the tag
    lnTag = loBd.GetByte(lnIndex)
    IF (lnTag <> lnExpectedTag) THEN
        ? "Expected tag " + STR(lnExpectedTag)
        RELEASE loBd
        CANCEL
    ENDIF

    lnIndex = lnIndex + 1
    lnLen = loBd.GetByte(lnIndex)
    IF (lnLen = 0) THEN
        ? "Expected length > 0"
        RELEASE loBd
        CANCEL
    ENDIF

    lnIndex = lnIndex + 1
    * Tags 8 and 9 contain binary data.
    IF (lnExpectedTag >= 8) THEN
        lcTagValue = loBd.GetEncodedChunk(lnIndex,lnLen,"base64")
    ELSE
        lcTagValue = loBd.GetTextChunk(lnIndex,lnLen,"utf-8")
    ENDIF

    ? "tag " + STR(lnTag) + ": " + lcTagValue

    lnIndex = lnIndex + lnLen
    lnExpectedTag = lnExpectedTag + 1
ENDDO

RELEASE loBd