Sample code for 30+ languages & platforms
Visual FoxPro Requires Chilkat v11.7.0+

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

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