📄 stbarc.pas
字号:
Code93 : array[0..46] of string[9] =
{BSBSBS} {bar-space-bar-space-bar...} {0-narrow, 1-wide}
('131112', {0}
'111213', {1}
'111312', {2}
'111411', {3}
'121113', {4}
'121212', {5}
'121311', {6}
'111114', {7}
'131211', {8}
'141111', {9}
'211113', {A}
'211212', {B}
'211311', {C}
'221112', {D}
'221211', {E}
'231111', {F}
'112113', {G}
'112212', {H}
'112311', {I}
'122112', {J}
'132111', {K}
'111123', {L}
'111222', {M}
'111321', {N}
'121122', {O}
'131121', {P}
'212112', {Q}
'212211', {R}
'211122', {S}
'211221', {T}
'221121', {U}
'222111', {V}
'112122', {W}
'112221', {X}
'122121', {Y}
'123111', {Z}
'121131', {-}
'311112', {.}
'311211', {SPACE}
'321111', { $}
'112131', {/}
'113121', {+}
'211131', {%}
'121221', {($)}
'312111', {(%)}
'311121', {(/)}
'122211'); {(+)}
Code93Map : array[#0..#127] of string[2] =
{Circle Code} {ASCII Code 93 }
('%U', {NL (%)U }
'$A', {SH ($)A }
'$B', {SX ($)B }
'$C', {EX ($)C }
'$D', {ET ($)D }
'$E', {EQ ($)E }
'$F', {AK ($)F }
'$G', {BL ($)G }
'$H', {BS ($)H }
'$I', {HT ($)I }
'$J', {LF ($)J }
'$K', {VT ($)K }
'$L', {FF ($)L }
'$M', {CR ($)M }
'$N', {SO ($)N }
'$O', {SI ($)O }
'$P', {DL ($)P }
'$Q', {D1 ($)Q }
'$R', {D2 ($)R }
'$S', {D3 ($)S }
'$T', {D4 ($)T }
'$U', {NK ($)U }
'$V', {SY ($)V }
'$W', {EB ($)W }
'$X', {CN ($)X }
'$Y', {EM ($)Y }
'$Z', {SB ($)Z }
'%A', {EC (%)A }
'%B', {FS (%)B }
'%C', {GS (%)C }
'%D', {RS (%)D }
'%E', {US (%)E }
' ', {Space Space }
'/A', {! (/)A }
'/B', {" (/)B }
'/C', {# (/)C }
'$', { $ (/)D or $}
'%', {% (/)E or %}
'/F', {& (/)F }
'/G', {' (/)G }
'/H', {( (/)H }
'/I', {) (/)I }
'/J', {* (/)J }
' +', {+ (/)K or +}
'/L', {, (/)L }
'-', {- (/)M or -}
'.', {. (/)N or .}
'/', {/ (/)O or /}
'0', {0 (/)P or 0}
'1', {1 (/)Q or 1}
'2', {2 (/)R or 2}
'3', {3 (/)S or 3}
'4', {4 (/)T or 4}
'5', {5 (/)U or 5}
'6', {6 (/)V or 6}
'7', {7 (/)W or 7}
'8', {8 (/)X or 8}
'9', {9 (/)Y or 9}
'/Z', {: (/)Z }
'%F', {; (%)F }
'%G', {< (%)G }
'%H', {= (%)H }
'%I', {> (%)I }
'%J', {? (%)J }
'%V', { (%)V }
'A', {A A }
'B', {B B }
'C', {C C }
'D', {D D }
'E', {E E }
'F', {F F }
'G', {G G }
'H', {H H }
'I', {I I }
'J', {J J }
'K', {K K }
'L', {L L }
'M', {M M }
'N', {N N }
'O', {O O }
'P', {P P }
'Q', {Q Q }
'R', {R R }
'S', {S S }
'T', {T T }
'U', {U U }
'V', {V V }
'W', {W W }
'X', {X X }
'Y', {Y Y }
'Z', {Z Z }
'%K', {[ (%)K }
'%L', {\ (%)L }
'%M', {] (%)M }
'%N', {^ (%)N }
'%O', {_ (%)O }
'%W', {` (%)W }
'+A', {a (+)A }
'+B', {b (+)B }
'+C', {c (+)C }
'+D', {d (+)D }
'+E', {e (+)E }
'+F', {f (+)F }
'+G', {g (+)G }
'+H', {h (+)H }
'+I', {i (+)I }
'+J', {j (+)J }
'+K', {k (+)K }
'+L', {l (+)L }
'+M', {m (+)M }
'+N', {n (+)N }
'+O', {o (+)O }
'+P', {p (+)P }
'+Q', {q (+)Q }
'+R', {r (+)R }
'+S', {s (+)S }
'+T', {t (+)T }
'+U', {u (+)U }
'+V', {v (+)V }
'+W', {w (+)W }
'+X', {x (+)X }
'+Y', {y (+)Y }
'+Z', {z (+)Z }
'%P', {{ (%)P }
'%Q', {| (%)Q }
'%R', {}{ (%)R }
'%S', {~ (%)S }
'%T'); { DEL (%)T }
const
Code128 : array[0..106] of string[7] =
{BSBSBS} {Value CodeA CodeB CodeC}
('212222', {0 SPACE SPACE 00}
'222122', {1 ! ! 01}
'222221', {2 " " 02}
'121223', {3 # # 03}
'121322', {4 $ $ 04}
'131222', {5 % % 05}
'122213', {6 & & 06}
'122312', {7 ' ' 07}
'132212', {8 ( ( 08}
'221213', {9 ) ) 09}
'221312', {10 * * 10}
'231212', {11 + + 11}
'112232', {12 , , 12}
'122132', {13 - - 13}
'122231', {14 . . 14}
'113222', {15 / / 15}
'123122', {16 0 0 16}
'123221', {17 1 1 17}
'223211', {18 2 2 18}
'221132', {19 3 3 19}
'221231', {20 4 4 20}
'213212', {21 5 5 21}
'223112', {22 6 6 22}
'312131', {23 7 7 23}
'311222', {24 8 8 24}
'321122', {25 9 9 25}
'321221', {26 : : 26}
'312212', {27 ; ; 27}
'322112', {28 < < 28}
'322211', {29 = = 29}
'212123', {30 > > 30}
'212321', {31 ? ? 31}
'232121', {32 @ @ 32}
'111323', {33 A A 33}
'131123', {34 B B 34}
'131321', {35 C C 35}
'112313', {36 D D 36}
'132113', {37 E E 37}
'132311', {38 F F 38}
'211313', {39 G G 39}
'231113', {40 H H 40}
'231311', {41 I I 41}
'112133', {42 J J 42}
'112331', {43 K K 43}
'132131', {44 L L 44}
'113123', {45 M M 45}
'113321', {46 N N 46}
'133121', {47 O O 47}
'313121', {48 P P 48}
'211331', {49 Q Q 49}
'231131', {50 R R 50}
'213113', {51 S S 51}
'213311', {52 T T 52}
'213131', {53 U U 53}
'311123', {54 V V 54}
'311321', {55 W W 55}
'331121', {56 X X 56}
'312113', {57 Y Y 57}
'312311', {58 Z Z 58}
'332111', {59 [ [ 59}
'314111', {60 \ \ 60}
'221411', {61 ] ] 61}
'431111', {62 ^ ^ 62}
'111224', {63 _ _ 63}
'111422', {64 NU ` 64}
'121124', {65 SH a 65}
'121421', {66 SX b 66}
'141122', {67 EX c 67}
'141221', {68 ET d 68}
'112214', {69 EQ e 69}
'112412', {70 AK f 70}
'122114', {71 BL g 71}
'122411', {72 BS h 72}
'142112', {73 HT i 73}
'142211', {74 LF j 74}
'241211', {75 VT k 75}
'221114', {76 FF l 76}
'413111', {77 CR m 77}
'241112', {78 SO n 78}
'134111', {79 SI o 79}
'111242', {80 DL p 80}
'121142', {81 D1 q 81}
'121241', {82 D2 r 82}
'114212', {83 D3 s 83}
'124112', {84 D4 t 84}
'124211', {85 NK u 85}
'411212', {86 SY v 86}
'421112', {87 EB w 87}
'421211', {88 CN x 88}
'212141', {89 EM y 89}
'214121', {90 SB z 90}
'412121', (*91 EC { 91*)
'111143', {92 FS 92}
'111341', (*93 GS } 93*)
'131141', {94 RS ~ 94}
'114113', {95 US DEL 95}
'114311', {96 FNC 3 FNC 3 96} {use #132}
'411113', {97 FNC 2 FNC 2 97} {use #131}
'411311', {98 SHIFT SHIFT 98} {use #130}
'113141', {99 CODE C CODE C 99} {use #135}
'114131', {100 CODE B FNC 4 CODE B} {use #134}
'311141', {101 FNC 4 CODE A CODE A} {use #133}
'411131', {102 FNC 1 FNC 1 FNC 1 } {use #130}
'211412', {103 CODE A} {use #136}
'211214', {104 CODE B} {use #137}
'211232', {105 CODE C} {use #138}
'2331112');{106 STOP} {use #139}
{*** helper routines ***}
function RectWidth(const R : TRect) : Integer;
begin
Result := R.Right-R.Left;
end;
function RectHeight(const R : TRect) : Integer;
begin
Result := R.Bottom-R.Top;
end;
{*** TStBarCodeInfo ***}
procedure TStBarCodeInfo.Add(ModuleCount : Integer; BarKind : TStBarKindSet);
var
Bar : TStBarData;
begin
Bar := TStBarData.Create;
Bar.Modules := ModuleCount;
Bar.Kind := BarKind;
FBars.Add(Bar);
end;
procedure TStBarCodeInfo.Clear;
var
I : Integer;
begin
for I := 0 to FBars.Count-1 do
TStBarData(FBars[I]).Free;
FBars.Clear;
end;
constructor TStBarCodeInfo.Create;
begin
inherited Create;
FBars := TList.Create;
end;
destructor TStBarCodeInfo.Destroy;
begin
Clear;
FBars.Free;
FBars := nil;
inherited Destroy;
end;
function TStBarCodeInfo.GetBars(Index : Integer) : TStBarData;
begin
Result := FBars[Index];
end;
function TStBarCodeInfo.GetCount : Integer;
begin
Result := FBars.Count;
end;
{*** TStBarCode ***}
procedure TStBarCode.CalcBarCode;
var
I, J, X : Integer;
CheckC : Integer;
CheckK : Integer;
CSP : string;
C : string;
C1, C2 : string;
procedure AddCode(const S : string; AKind : TStBarKindSet);
var
I : Integer;
begin
for I := 1 to Length(S) do
if S[I] = '0' then
bcBarInfo.Add(1, AKind - [bkBar, bkThreeQuarterBar, bkHalfBar] + [bkSpace])
else
bcBarInfo.Add(StrToInt(S[I]), AKind);
end;
procedure AddECode(const Parity : string);
var
I : Integer;
begin
for I := 1 to Length(Parity) do begin
if Parity[I] = 'E' then
AddCode(UPC_E_EvenParity[bcDigits[I]], [bkBar])
else
AddCode(UPC_E_OddParity[bcDigits[I]], [bkBar]);
end;
end;
procedure AddSupCode(const Parity : string);
var
I : Integer;
begin
for I := 1 to Length(Parity) do begin
if Parity[I] = 'E' then
AddCode(UPC_E_EvenParity[bcDigits[I]], [bkThreeQuarterBar, bkSupplement])
else
AddCode(UPC_E_OddParity[bcDigits[I]], [bkThreeQuarterBar, bkSupplement]);
if I < Length(Parity) then
AddCode('01', [bkThreeQuarterBar, bkSupplement]);
end;
end;
procedure AddCodeModules(const S : string);
var
K : Integer;
begin
for K := 1 to Length(S) do begin
if Odd(K) then
bcBarInfo.Add(StrToInt(S[K]), [bkBar])
else
bcBarInfo.Add(StrToInt(S[K]), [bkSpace]);
end;
end;
procedure AddCodeWideNarrow(const S : string);
var
K : Integer;
begin
for K := 1 to Length(S) do begin
case S[K] of
'0' : if Odd(K) then
bcBarInfo.Add(1, [bkBar])
else
bcBarInfo.Add(1, [bkSpace]);
'1' : if Odd(K) then
bcBarInfo.Add(FBarNarrowToWideRatio, [bkBar])
else
bcBarInfo.Add(FBarNarrowToWideRatio, [bkSpace]);
end;
end;
end;
begin
if csLoading in ComponentState then
Exit;
bcBarInfo.Clear;
if Code = '' then
Exit;
{get copy of code}
C := Code;
{get digits}
case FBarCodeType of
bcUPC_A, bcUPC_E, bcEAN_8, bcEAN_13, bcCodabar, bcCode11, bcCode93 :
begin
bcDigitCount := GetDigits(C);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -