bardecode.com
barcode reading software
  • Home
  • Download
  • Purchase
  • SDK Licensing
  • Pricing
    • Windows SDK Price List
    • Windows SDK with PDF Extension Price List
    • Linux SDK Price List
    • Linux SDK with PDF Extension Price List
    • PDF Extension For Windows Price List
    • Multi-Platform Toolkit for .NET Price List
    • BardecodeFiler Desktop Only Price List
    • BardecodeFiler Windows Service Price List
    • DOS Command Prompt Barcode Tool Price List
    • Terms and Conditions
    • Refund Policy
  • Products
    • Softek Barcode Reader Toolkit for Windows
    • Softek Barcode Reader Toolkit for Linux
    • BardecodeFiler Desktop App
    • BardecodeFiler Windows Service
    • Windows DOS Command Prompt Tool
    • Multi-platform barcode reader toolkit for .NET
    • Aquaforest’s Autobahn DX
  • Knowledge Base
    • Documentation
    • Specifications
  • News
  • Contact
    • About Us
    • Terms and Conditions
    • Resellers
    • Links
Select Page ...

News

Using the SDK with Borland Delphi

admin November 23, 2012 Knowledge Base, Software Development Kits No Comments

The following code shows how the Softek barcode Reader Toolkit can be used from Borland Delphi to extract barcode information from images and memory bitmaps.

Click here for some tips on using the toolkit with Delphi 2009.

Click here to download a Borland Delphi example in a zip file.

The following code was kindly provided by Marian Aldenh?vel of MBA Software-Consulting.

 

unit SoftekBarCode;

{ (c)2003 Marian Aldenh?vel MBA Software-Consulting
     Rosenhain 23
     53123 Bonn

 marian@mba-software.de 

  This unit dynamically imports the functions from the Softek Barcode Library.

  Usage:

  - Call InitLibrary from somewhere in your program before calling any of
    the functions.
  - See the documentation from Softek for the use of the actual functions.

}

interface

uses Windows,SysUtils;

type short=shortint;
     long=integer;
     PLong=^long;

var stGetBitmapResolution:function():integer; stdcall;
    stSetBitmapResolution:function(newValue:integer):integer; stdcall;
    stGetDebugTraceFile:function():PChar; stdcall;
    stSetDebugTraceFile:function(lpszNewValue:PChar):PChar; stdcall;
    stGetLineJump:function():integer; stdcall;
    stSetLineJump:function(nNewValue:integer):integer; stdcall;
    stGetLowerRatio:function():double; stdcall;
    stSetLowerRatio:function(newValue:double):double; stdcall;
    stGetMinOccurrence:function():short; stdcall;    
    stSetMinOccurrence:function(nNewValue:short):short; stdcall;    
    stGetMultipleRead:function():bool; stdcall;    
    stSetMultipleRead:function(bNewValue:bool):bool; stdcall;
    stGetNoiseReduction:function():short; stdcall;
    stSetNoiseReduction:function(nNewValue:short):short; stdcall;    
    stGetPageNo:function():short; stdcall;    
    stSetPageNo:function(nNewValue:short):short; stdcall;    
    stGetPrefOccurrence:function():short; stdcall;    
    stSetPrefOccurrence:function(nNewValue:short):short; stdcall;    
    stGetQuietZoneSize:function():short; stdcall;    
    stSetQuietZoneSize:function(nNewValue:short):short; stdcall;    
    stGetRotation:function():short; stdcall;    
    stSetRotation:function(nNewValue:short):short; stdcall;    
    stGetUpperRatio:function():double; stdcall;    
    stSetUpperRatio:function(newValue:double):double; stdcall;    
    stGetReadCode39:function():bool; stdcall;
    stSetReadCode39:function(bNewValue:bool):bool; stdcall;
    stGetReadEAN13:function():bool; stdcall;    
    stSetReadEAN13:function(bNewValue:bool):bool; stdcall;    
    stGetReadEAN8:function():bool; stdcall;
    stSetReadEAN8:function(bNewValue:bool):bool; stdcall;    
    stGetReadUPCA:function():bool; stdcall;    
    stSetReadUPCA:function(bNewValue:bool):bool; stdcall;    
    stGetReadUPCE:function():bool; stdcall;    
    stSetReadUPCE:function(bNewValue:bool):bool; stdcall;    
    stGetShowCheckDigit:function():bool; stdcall;    
    stSetShowCheckDigit:function(bNewValue:bool):bool; stdcall;    
    stGetReadCode128:function():bool; stdcall;    
    stSetReadCode128:function(bNewValue:bool):bool; stdcall;    
    stGetCode39NeedStartStop:function():bool; stdcall;    
    stSetCode39NeedStartStop:function(bNewValue:bool):bool; stdcall;    
    stGetReadCode25:function():bool; stdcall;    
    stSetReadCode25:function(bNewValue:bool):bool; stdcall;    
    stGetColorThreshold:function():short; stdcall;    
    stSetColorThreshold:function(nNewValue:short):short; stdcall;    
    stGetBarString:function(index:short):PChar; stdcall;    
    stScanBarCode:function(FileName:PChar):short; stdcall;    
    stScanBarCodeFromBitmap:function(hBitmap:long):short; stdcall;    
    stGetBarStringType:function(index:short):PChar; stdcall;    
    stGetBarStringPos:function(nBarCode:short;var pTopLeftX,pTopLeftY,pBotRightX,pBotRightY:Long):short; stdcall;
    stSetScanRect:function(TopLeftX,TopLeftY,BottomRightX,BottomRightY:Long;MappingMode:short):bool; stdcall;
    stGetReadPatchCodes:function():bool; stdcall;
    stSetReadPatchCodes:function(bNewValue:bool):bool; stdcall;
    stSaveBitmap:function(hBitmap:Long;strFilePath:PChar):bool; stdcall;

function stGetErrorString(ErrorCode:short):string;

procedure InitLibrary;
procedure DoneLibrary;

type ESoftekBarCodeError=class(Exception);

implementation

function stGetErrorString(ErrorCode:short):string;
begin
  case ErrorCode of
    -1:Result:='Error opening file';
    -2:Result:='File is Multi Plane';
    -3:Result:='Invalid number of bits per sample';
    -4:Result:='Memory allocation error';
    -5:Result:='Invalid TIF photometric value';
    else Result:=Format('Unknown error %d',[ErrorCode]);
  end;
end;

var LibraryHandle:THandle=0;

procedure InitLibrary;

  function DoGetProcAdress(aName:string):pointer;
  begin
    Result:=GetProcAddress(LibraryHandle,PChar(aName));
    if Result=NIL then RaiseLastOSError;
  end;

begin
  if LibraryHandle<>0 then exit;

  LibraryHandle:=LoadLibrary('SoftekBarCode.dll');
  if LibraryHandle=0 then RaiseLastOSError;

  @stGetBitmapResolution:=DoGetProcAdress('stGetBitmapResolution');
  @stSetBitmapResolution:=DoGetProcAdress('stSetBitmapResolution');
  @stGetDebugTraceFile:=DoGetProcAdress('stGetDebugTraceFile');
  @stSetDebugTraceFile:=DoGetProcAdress('stSetDebugTraceFile');
  @stGetLineJump:=DoGetProcAdress('stGetLineJump');
  @stSetLineJump:=DoGetProcAdress('stSetLineJump');
  @stGetLowerRatio:=DoGetProcAdress('stGetLowerRatio');
  @stSetLowerRatio:=DoGetProcAdress('stSetLowerRatio');
  @stGetMinOccurrence:=DoGetProcAdress('stGetMinOccurrence');
  @stSetMinOccurrence:=DoGetProcAdress('stSetMinOccurrence');
  @stGetMultipleRead:=DoGetProcAdress('stGetMultipleRead');
  @stSetMultipleRead:=DoGetProcAdress('stSetMultipleRead');
  @stGetNoiseReduction:=DoGetProcAdress('stGetNoiseReduction');
  @stSetNoiseReduction:=DoGetProcAdress('stSetNoiseReduction');
  @stGetPageNo:=DoGetProcAdress('stGetPageNo');
  @stSetPageNo:=DoGetProcAdress('stSetPageNo');
  @stGetPrefOccurrence:=DoGetProcAdress('stGetPrefOccurrence');
  @stSetPrefOccurrence:=DoGetProcAdress('stSetPrefOccurrence');
  @stGetQuietZoneSize:=DoGetProcAdress('stGetQuietZoneSize');
  @stSetQuietZoneSize:=DoGetProcAdress('stSetQuietZoneSize');
  @stGetRotation:=DoGetProcAdress('stGetRotation');
  @stSetRotation:=DoGetProcAdress('stSetRotation');
  @stGetUpperRatio:=DoGetProcAdress('stGetUpperRatio');
  @stSetUpperRatio:=DoGetProcAdress('stSetUpperRatio');
  @stGetReadCode39:=DoGetProcAdress('stGetReadCode39');
  @stSetReadCode39:=DoGetProcAdress('stSetReadCode39');
  @stGetReadEAN13:=DoGetProcAdress('stGetReadEAN13');
  @stSetReadEAN13:=DoGetProcAdress('stSetReadEAN13');
  @stGetReadEAN8:=DoGetProcAdress('stGetReadEAN8');
  @stSetReadEAN8:=DoGetProcAdress('stSetReadEAN8');
  @stGetReadUPCA:=DoGetProcAdress('stGetReadUPCA');
  @stSetReadUPCA:=DoGetProcAdress('stSetReadUPCA');
  @stGetReadUPCE:=DoGetProcAdress('stGetReadUPCE');
  @stSetReadUPCE:=DoGetProcAdress('stSetReadUPCE');
  @stGetShowCheckDigit:=DoGetProcAdress('stGetShowCheckDigit');
  @stSetShowCheckDigit:=DoGetProcAdress('stSetShowCheckDigit');
  @stGetReadCode128:=DoGetProcAdress('stGetReadCode128');
  @stSetReadCode128:=DoGetProcAdress('stSetReadCode128');
  @stGetCode39NeedStartStop:=DoGetProcAdress('stGetCode39NeedStartStop');
  @stSetCode39NeedStartStop:=DoGetProcAdress('stSetCode39NeedStartStop');
  @stGetReadCode25:=DoGetProcAdress('stGetReadCode25');
  @stSetReadCode25:=DoGetProcAdress('stSetReadCode25');
  @stGetColorThreshold:=DoGetProcAdress('stGetColorThreshold');
  @stSetColorThreshold:=DoGetProcAdress('stSetColorThreshold');
  @stGetBarString:=DoGetProcAdress('stGetBarString');
  @stScanBarCode:=DoGetProcAdress('stScanBarCode');
  @stScanBarCodeFromBitmap:=DoGetProcAdress('stScanBarCodeFromBitmap');
  @stGetBarStringType:=DoGetProcAdress('stGetBarStringType');
  @stGetBarStringPos:=DoGetProcAdress('stGetBarStringPos');
  @stSetScanRect:=DoGetProcAdress('stSetScanRect');
  @stGetReadPatchCodes:=DoGetProcAdress('stGetReadPatchCodes');
  @stSetReadPatchCodes:=DoGetProcAdress('stSetReadPatchCodes');
  @stSaveBitmap:=DoGetProcAdress('stSaveBitmap');
end;

procedure DoneLibrary;
begin
  if LibraryHandle=0 then exit;

  if not FreeLibrary(LibraryHandle) then RaiseLastOSError;

  stGetBitmapResolution:=NIL;
  stSetBitmapResolution:=NIL;
  stGetDebugTraceFile:=NIL;
  stSetDebugTraceFile:=NIL;
  stGetLineJump:=NIL;
  stSetLineJump:=NIL;
  stGetLowerRatio:=NIL;
  stSetLowerRatio:=NIL;
  stGetMinOccurrence:=NIL;
  stSetMinOccurrence:=NIL;
  stGetMultipleRead:=NIL;
  stSetMultipleRead:=NIL;
  stGetNoiseReduction:=NIL;
  stSetNoiseReduction:=NIL;
  stGetPageNo:=NIL;
  stSetPageNo:=NIL;
  stGetPrefOccurrence:=NIL;
  stSetPrefOccurrence:=NIL;
  stGetQuietZoneSize:=NIL;
  stSetQuietZoneSize:=NIL;
  stGetRotation:=NIL;
  stSetRotation:=NIL;
  stGetUpperRatio:=NIL;
  stSetUpperRatio:=NIL;
  stGetReadCode39:=NIL;
  stSetReadCode39:=NIL;
  stGetReadEAN13:=NIL;
  stSetReadEAN13:=NIL;
  stGetReadEAN8:=NIL;
  stSetReadEAN8:=NIL;
  stGetReadUPCA:=NIL;
  stSetReadUPCA:=NIL;
  stGetReadUPCE:=NIL;
  stSetReadUPCE:=NIL;
  stGetShowCheckDigit:=NIL;
  stSetShowCheckDigit:=NIL;
  stGetReadCode128:=NIL;
  stSetReadCode128:=NIL;
  stGetCode39NeedStartStop:=NIL;
  stSetCode39NeedStartStop:=NIL;
  stGetReadCode25:=NIL;
  stSetReadCode25:=NIL;
  stGetColorThreshold:=NIL;
  stSetColorThreshold:=NIL;
  stGetBarString:=NIL;
  stScanBarCode:=NIL;
  stScanBarCodeFromBitmap:=NIL;
  stGetBarStringType:=NIL;
  stGetBarStringPos:=NIL;
  stSetScanRect:=NIL;
  stGetReadPatchCodes:=NIL;
  stSetReadPatchCodes:=NIL;
  stSaveBitmap:=NIL;
end;

initialization
finalization
  DoneLibrary;
end.
← Code 128 barcode specification
VB6 Code snippets →
admin

  • Copyright © 2023 Softek Software Ltd. All Rights Reserved