Visual FoxPro Requires Chilkat v11.7.0+
Visual FoxPro
Validate a QR Code Request
See more QR Code Examples
Demonstrates the validate operation, which examines a request without producing anything. The scope says how far to look: definition checks the options, capacity also checks that the data fits a QR symbol, and layout also checks the rendered size against the limits. The response has a validationStatus of valid or invalid, a list of checks, and findings[] describing what is wrong. A request that cannot be understood at all, such as one with a misspelled option, still makes the call fail in the usual way.Chilkat Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loFmt
LOCAL loJsonOut
LOCAL i
LOCAL n
LOCAL loJson
lnSuccess = 0
* This example requires the Chilkat API to have been previously unlocked.
* See Global Unlock Sample for sample code.
loFmt = CreateObject('Chilkat.Formats')
loJsonOut = CreateObject('Chilkat.JsonObject')
loJson = CreateObject('Chilkat.JsonObject')
loJson.UpdateString("target","symbol")
loJson.UpdateString("validation.scope","capacity")
loJson.UpdateString("payload.text","https://www.chilkatsoft.com/barcode_overview.asp")
lnSuccess = loFmt.QrCode("validate",loJson,loJsonOut)
IF (lnSuccess = 0) THEN
? loFmt.LastErrorText
RELEASE loFmt
RELEASE loJsonOut
RELEASE loJson
CANCEL
ENDIF
? "status: " + loJsonOut.StringOf("validationStatus")
n = loJsonOut.SizeOfArray("checks")
FOR i = 0 TO n - 1
loJsonOut.I = i
? " " + loJsonOut.StringOf("checks[i].name") + ": " + loJsonOut.StringOf("checks[i].status")
NEXT
* The same text does not fit version 2 at error-correction level H.
loJson.UpdateInt("encoding.qr.maxVersion",2)
loJson.UpdateString("encoding.qr.errorCorrection","H")
lnSuccess = loFmt.QrCode("validate",loJson,loJsonOut)
IF (lnSuccess = 0) THEN
? loFmt.LastErrorText
RELEASE loFmt
RELEASE loJsonOut
RELEASE loJson
CANCEL
ENDIF
? "status: " + loJsonOut.StringOf("validationStatus")
n = loJsonOut.SizeOfArray("checks")
FOR i = 0 TO n - 1
loJsonOut.I = i
? " " + loJsonOut.StringOf("checks[i].name") + ": " + loJsonOut.StringOf("checks[i].status")
NEXT
n = loJsonOut.SizeOfArray("findings")
FOR i = 0 TO n - 1
loJsonOut.I = i
? "finding: " + loJsonOut.StringOf("findings[i].code") + " at " + loJsonOut.StringOf("findings[i].path")
? " " + loJsonOut.StringOf("findings[i].message")
NEXT
* Sample output:
* status: valid
* definition: passed
* capacity: passed
* layout: notApplicable
* status: invalid
* definition: passed
* capacity: failed
* layout: notApplicable
* finding: capacityExceeded at /payload
* the payload does not fit any admitted QR version at the selected error-correction level
RELEASE loFmt
RELEASE loJsonOut
RELEASE loJson