Optical Barcode Recognition for FireMonkey

OBR
Delphi and C++ Builder optical barcode recognition component for FireMonkey.
  • uses ZBar bar code reader library
  • supports EAN-13/UPC-A, EAN-8, UPC-E, Code 39, Code 93, Code 128, Codabar, GS1 DataBar, GS1 DataBar Expanded, Interleaved 2 of 5, SQ Code and QR Code barcodes
  • supports Windows, macOS, iOS and Android
  • available for Delphi/C++ Builder XE3 - 10.4
  • source code included in registered version
  • royalty free distribution in applications

Download and order

FAQ

How can I fix "arm-linux-androideabi-ld.exe: cannot find -lzbar" when building Android 32 application?
Copy libzbar.a file located in folder
"c:\Program Files (x86)\Winsoft\OBR for FireMonkey\Library\Android\armeabi-v7a"
to folder
"c:\Program Files (x86)\Winsoft\OBR for FireMonkey\Delphi104-Android32"

How can I fix "ld.exe: cannot find -lzbar" when building Android 64 application?
Copy libzbar.a file located in folder
"c:\Program Files (x86)\Winsoft\OBR for FireMonkey\Library\Android\arm64-v8a"
to folder
"c:\Program Files (x86)\Winsoft\OBR for FireMonkey\Delphi104-Android64"

How can I fix "ld: file not found: libzbar.a" when building iOS application?
Copy libzbar.a file from folder
"c:\Program Files (x86)\Winsoft\OBR for FireMonkey\Library\iOSDevice"
to the folder where is located source code of your application.

How can I fix "[ldandroid Error] "ld" exited with code 1." in C++ Builder?
Add these files in Project Manager:
"c:\Program Files (x86)\Winsoft\OBR for FireMonkey\Library\Android\armeabi-v7a\libzbar.a"
"c:\Program Files (x86)\Winsoft\OBR for FireMonkey\Delphi104-Android32\libWinsoft.FireMonkey.ObrP.a"

How can I disable recognition of some symbology?
Add this line before scaning barcode:
FObr.Configure(syQrCode, saNone, coEnableSymbology, 0); // disable QR code symbology
							

How can I enable recognition of some symbology?
Add this line before scaning barcode:
FObr.Configure(syQrCode, saNone, coEnableSymbology, 1); // enable QR code symbology
							

How can I scan UPC/EAN barcodes with 5 digit extension?
Add this line before scaning barcode:
FObr.Configure(syEan5, saNone, coEnableSymbology, 1);
							

Why are some QR Codes containing diacritic incorrectly decoded?
This problem is caused by incorrectly created QR Codes that use QR Code Kanji (Shift JIS X 0208) encoding. Use this code for decoding:
function DecodeQRCode(Data: TBytes): string;
var
  Utf8: string;
  ShiftJIS: TBytes;
begin
  Utf8 := TEncoding.UTF8.GetString(Data);
  ShiftJIS := TEncoding.GetEncoding(932 {Shift JIS }).GetBytes(Utf8);
  Result := TEncoding.ANSI.GetString(ShiftJIS);
end;
							

Related links