日期:2014-05-17 浏览次数:20939 次
{ 函数名称:EAN13Code
输入参数:ISBN13Str: string 说明:人工可读的ISBN13编码字符串
输出参数:string 说明:用于输出打印条码字体相应的字符串
说明: ISBN13字符串 转换为 ISBN barcode 字体对应的字符串编码,
以便使用ISBN barcode字体打印相应条形码。
该条形码字体包含三种条码字符集:
数字 0 1 2 3 4 5 6 7 8 9
A字符集 0 1 2 3 4 5 6 7 8 9
B字符集 A B C D E F G H I J
C字符集 K L M N O P Q R S T
前置符集 u v w x y
中间符 *
起始符/中止符 (
(9) y
后置符 >
标准书号条形码格式:前置符 + 起始符 + 左侧数据符(ABBABA)+ 中间符
+ 右侧数据符(CCCCCC)+ 中止符 + 后置符
详细内容参考:GB/T 12906—2008
*}
function EAN13Code(ISBN13Str:string):string;
const
ACharSet : array[0..9] of Char = ('0','1','2','3','4','5','6','7','8','9') ; //字符集A
BCharSet : array[0..9] of Char = ('A','B','C','D','E','F','G','H','I','J') ; //字符集B
CCharSet : array[0..9] of Char = ('K','L','M','N','O','P','Q','R','S','T') ; //字符集C
HCharSet : array[5..9] of Char = ('u','v','w','x','y');//前置符集
var
i: integer;
EAN13Str : string;
begin
if length(ISBN13Str)<>13 then result := '' else
begin
EAN13Str := HCharSet[StrToInt(ISBN13Str[1])] + '('
+ ACharSet[StrToInt(ISBN13Str[2])]
+ BCharSet[StrToInt(ISBN13Str[3])]
+ BCharSet[StrToInt(ISBN13Str[4])]
+ ACharSet[StrToInt(ISBN13Str[5])]
+ BCharSet[StrToInt(ISBN13Str[6])]
+ ACharSet[StrToInt(ISBN13Str[7])] + '*';
for i := 8 to 13 do
EAN13Str := EAN13Str + CCharSet[StrToInt(ISBN13Str[i])];
EAN13Str := EAN13Str + '(>';
&