PowerBuilder
PowerBuilder
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 PowerBuilder Downloads
integer li_rc
integer li_Success
string ls_Qr
oleobject loo_Bd
integer li_Index
integer li_ExpectedTag
integer li_Tag
integer li_Len
string ls_TagValue
li_Success = 0
// Note: This example requires Chilkat v9.5.0.92 or greater.
ls_Qr = "ARdBaG1lZCBNb2hhbWVkIEFMIEFobWFkeQIPMzAwMDc1NTg4NzAwMDAzAxQyMDIyLTAzLTEzVDE0OjQwOjQwWgQHMTEwOC45MAUFMTQ0LjkGLCtiQTFtdWNWSTY3SDRXQ2JOL2U5SjJxVXBIVHQzVHdNZHhsa09XVGVvdjg9B2BNRVlDSVFDWWg1ZTNpcklxV2w1WXRhQ25LaXVqTUlUbW9rWFlPUE1wSURDSW9XVzc5d0loQU1YbWMrTUZIR3RhZUJzZU91RUdUbHdENmcwOWdOUVBSUHVZODlzNjVPV1MIWDBWMBAGByqGSM49AgEGBSuBBAAKA0IABNMAr2WtNWSj2uSrplhxz0cNFk/hv1LjMDgqbthcn6ydNWEuTNTQeyZJf1SfyMOFFM4cMpp+3wL+65Rj3fi+4w0JSDBGAiEAlcAzHKujzvjHJrAV1M/79RnYRqe66kmtgMUykr/N/CACIQDgTQwbfftw0pYo6FX8c63Q4edvFgt+7JhHaBlla0qRtQ=="
ls_Qr = "AQxGaXJveiBBc2hyYWYCCjEyMzQ1Njc4OTEDEzIwMjEtMTEtMTcgMDg6MzA6MDAEBjEwMC4wMAUFMTUuMDAGLDlmc3JYVW8rU3BYQVlJTkw5aGFLU2dEOXgxaVJsZk53SVBDZnBlWXczYTA9B1hYMEM4VjFIL3hUMGdOaytWWXh2U2Z6UFJlUjZPM2t5VXA0TERITzJLMzlNSGJETXVvTGltQSt3RnovV2pVdEdMSHpaK0J5enNmWUdEQzliNUFGSU1FQT09CFgwVjAQBgcqhkjOPQIBBgUrgQQACgNCAARw3B+mu14x0h3pJFKqEWWT7DmD7jWYkZV7qHyikPlN4P/4/b7YD+A9wnFI92HTKm+/BGKXVf/pfLtsmdIIaPHnCUgwRgIhAMTjOkWwcNu5Aw5k1Yr3YgbPhdxKoJV1a3+5ShPtx1/IAiEAyrwsA/NuqV6XjybyrZpMp6eJAqslACLfCldti/PVOQs="
loo_Bd = create oleobject
li_rc = loo_Bd.ConnectToNewObject("Chilkat.BinData")
if li_rc < 0 then
destroy loo_Bd
MessageBox("Error","Connecting to COM object failed")
return
end if
li_Success = loo_Bd.AppendEncoded(ls_Qr,"base64")
li_Index = 0
li_ExpectedTag = 1
do while (li_ExpectedTag <= 9)
// Get the tag
li_Tag = loo_Bd.GetByte(li_Index)
if li_Tag <> li_ExpectedTag then
Write-Debug "Expected tag " + string(li_ExpectedTag)
destroy loo_Bd
return
end if
li_Index = li_Index + 1
li_Len = loo_Bd.GetByte(li_Index)
if li_Len = 0 then
Write-Debug "Expected length > 0"
destroy loo_Bd
return
end if
li_Index = li_Index + 1
// Tags 8 and 9 contain binary data.
if li_ExpectedTag >= 8 then
ls_TagValue = loo_Bd.GetEncodedChunk(li_Index,li_Len,"base64")
else
ls_TagValue = loo_Bd.GetTextChunk(li_Index,li_Len,"utf-8")
end if
Write-Debug "tag " + string(li_Tag) + ": " + ls_TagValue
li_Index = li_Index + li_Len
li_ExpectedTag = li_ExpectedTag + 1
loop
destroy loo_Bd