打印土地证,现要加上条形码的功能,条码与土地证号对应原来学校里的老师给我发来一段代码和一个test.bmp文件,但我看看仍是无从下手,又不想多麻烦老师现将代码贴上,请大家指点迷津,多谢先了,圣诞快乐好象就是几个函数,我不知道怎样具体的用起来...function Tform1.BarToBmp(s:string;hi,wid:integer):string;
//s 为条码字符串,Hi为BMP高度,wid为bmp宽度
Var bmpFile,HeadFile:File;
    bmpFileName,HeadFileName:string;
    Data_00,Data_f0,Data_0f,Data_ff:Array[0..256] of Char;
    C_Letter,CodeInfo,vs:string;
    buf:array[0..128] of Char;
    bCode:Array[0..512] of char;
    Start,BarCodes:array[0..4800] of Char;
    Bits,kk,k,BarBits,ReadNum,str_len,str_len0,i,g,StartG:integer;
begin
    BarData00ff(Data_00,Data_0f,Data_f0,Data_ff,Wid);
    BmpfileName:='E:\ldmsapp\test.bmp';
    HeadfileName:='E:\ldmsapp\test1.Bmp';
    g:=0;
    for i:=0 to wid-1 Do Start[g+i] := data_0f[i];g:=g+wid;
    for i:=0 to wid-1 Do Start[g+i] := data_ff[i];g:=g+wid;
    for i:=0 to wid-1 Do Start[g+i] := data_0f[i];g:=g+wid;
    for i:=0 to wid-1 Do Start[g+i] := data_00[i];g:=g+wid;
    for i:=0 to wid-1 Do Start[g+i] := data_0f[i];g:=g+wid;
    for i:=0 to wid-1 Do Start[g+i] := data_00[i];g:=g+wid;
    for i:=0 to wid-1 Do Start[g+i] := data_0f[i];g:=g+wid;
    for i:=0 to wid-1 Do Start[g+i] := data_0f[i];g:=g+wid;
    Assignfile(HeadFile,HeadFileName);Reset(HeadFile,1);
    Assignfile(bmpFile,BmpFileName);ReWrite(bmpfile,1);
    for  i:=0 to g-1 Do BarCodes[i] := Start[i]; StartG :=g;
    str_len :=length(s);
    for i:=1 to str_len do begin
        C_Letter := Copy(s,i,1);
        CodeInfo := BarToCode(C_letter);
        kk :=Bardecode(bCode,CodeInfo,Wid);
        for k:=0 to kk-1 do BarCodes[g+k]:=bCode[k];g:=g+kk;
    End;
    for  i:=0 to StartG-1 Do BarCodes[g+i] := Start[i];
    str_len := StartG+g;
    BlockRead(HeadFile,buf,2,ReadNum);  Blockwrite(bmpfile,buf,2);
    BlockRead(HeadFile,buf,2);
    str_len0 := str_len;
    if( (str_len Mod 4)<>0) Then  begin
         str_len0 := (str_len div 4+1)*4;
         for i:= 0 to str_len0 - str_len-1 do   BarCodes[str_len+i]  :=Chr(0);
    End;
    Barbits := str_len0*hi;
    bits := Barbits+76; Vs:= Chr(bits Mod 256)+chr(bits div 256);
    BlockWrite(bmpfile,Bits,2);
    BlockRead(HeadFile,buf,14,ReadNum);
    BlockWrite(bmpfile,buf,14);
    bits := Str_len*2;
    BlockRead(HeadFile,buf,2,ReadNum); Vs:= Chr(bits Mod 256)+chr(bits div 256);
    BlockWrite(bmpfile,Bits,2);
    BlockRead(HeadFile,buf,2,ReadNum);
    BlockWrite(bmpfile,buf,2);    Bits := hi;
    BlockRead(HeadFile,buf,2,ReadNum); Vs:= Chr(bits Mod 256)+chr(bits div 256);
    BlockWrite(bmpfile,bits,2);
    BlockRead(HeadFile,buf,10,ReadNum);
    BlockWrite(bmpfile,buf,10);    Bits := Barbits;
    BlockRead(HeadFile,buf,2,ReadNum);Vs:= Chr(bits Mod 256)+chr(bits div 256);
    BlockWrite(bmpfile,bits,2);
    BlockRead(HeadFile,buf,82,ReadNum);
    BlockWrite(bmpfile,buf,82);
    for i :=1 to hi do  BlockWrite(bmpfile,barCodes,str_len0);
    CloseFile(bmpfile);
    Closefile(HeadFile);
    result := BmpfileName;
End;
procedure Tform1.BarData00ff(Var Data_00,Data_0f,Data_f0,Data_ff:Array of Char;Wid:integer);
Var i,BarColor,GapColor:integer;
begin
  BarColor :=0;GapColor :=15;
  Data_00[0]:=#0;  Data_f0[0]:=#0;
  Data_ff[0]:=#0;  Data_0f[0]:=#0;
  for i:=0 to wid-1 Do begin
    Data_00[i]:=Chr(BarColor*16+BarColor);
    Data_0f[i]:=Chr(BarColor*16+GapColor);
    Data_f0[i]:=Chr(GapColor*16+BarColor);
    Data_ff[i]:=Chr(GapColor*16+GapColor);
  End;
End;
function Tform1.BarDecode(var barCode:Array of Char ;CurCode:String;wid:integer):integer;
Var bit2:string;
    Data_00,Data_0f,Data_ff,Data_f0:Array[0..256] of Char;
    i,g,k:integer;
begin
 BarData00ff(Data_00,Data_0f,data_f0,Data_ff,Wid);
 BarCode[0]:=#0;CurCode :=CurCode+'0';g:=0;
 for k :=1 to 5 Do begin
       bit2 := Copy(CurCode,(k*2-1),2);
       if( Bit2='00') Then Begin
            for i:=0 to wid-1 Do barCode[g+i] := data_0f[i];g :=g+wid;
       End else if( Bit2='01') Then begin
            for i:=0 to wid-1 Do barCode[g+i] := data_0f[i];g:=g+wid;
            for i:=0 to wid-1 Do barCode[g+i] := data_ff[i];g:=g+wid;
       End else if( Bit2='10') Then begin
            for i:=0 to wid-1 Do barCode[g+i] := data_00[i];g:=g+wid;
            for i:=0 to wid-1 Do barCode[g+i] := data_0f[i];g:=g+wid;
       End else if( Bit2='11') Then begin
            for i:=0 to wid-1 Do barCode[g+i] := data_00[i];g:=g+wid;
            for i:=0 to wid-1 Do barCode[g+i] := data_0f[i];g:=g+wid;
            for i:=0 to wid-1 Do barCode[g+i] := data_ff[i];g:=g+wid;
       End;
 End;
 result := g;
End;
function Tform1.BarToCode(s:string):string;
Var Code:Array[0..38] of String;
    Info:Array[0..38] of String;
    PL,i:integer;
begin
  Code[0]:='0' ;Info[0]:='000110100';
  Code[1]:='1' ;Info[1]:='100100001';
  Code[2]:='2' ;Info[2]:='001100001';
  Code[3]:='3' ;Info[3]:='101100000';
  Code[4]:='4' ;Info[4]:='000110001';
  Code[5]:='5' ;Info[5]:='100110000';
  Code[6]:='6' ;Info[6]:='001110000';
  Code[7]:='7' ;Info[7]:='000100101';
  Code[8]:='8' ;Info[8]:='100100100';
  Code[9]:='9' ;Info[9]:='001100100';
  Code[10]:='a';Info[10]:='100001001';
  Code[11]:='b';Info[11]:='001001001';
  Code[12]:='c';Info[12]:='101001000';
  Code[13]:='d';Info[13]:='000011001';
  Code[14]:='e';Info[14]:='100011000';
  Code[15]:='f';Info[15]:='001011000';
  Code[16]:='g';Info[16]:='000001101';
  Code[17]:='h';Info[17]:='100001100';
  Code[18]:='i';Info[18]:='001001100';
  Code[19]:='j';Info[19]:='000011100';
  Code[20]:='k';Info[20]:='100000011';
  Code[21]:='l';Info[21]:='001000011';
  Code[22]:='m';Info[22]:='101000010';
  Code[23]:='n';Info[23]:='000010011';
  Code[24]:='o';Info[24]:='100010010';
  Code[25]:='p';Info[25]:='001010010';
  Code[26]:='q';Info[26]:='000000111';
  Code[27]:='r';Info[27]:='100000110';
  Code[28]:='s';Info[28]:='001000110';
  Code[29]:='t';Info[29]:='000010110';
  Code[30]:='u';Info[30]:='110000001';
  Code[31]:='v';Info[31]:='011000001';
  Code[32]:='w';Info[32]:='111000000';
  Code[33]:='x';Info[33]:='010010001';
  Code[34]:='y';Info[34]:='110010000';
  Code[35]:='z';Info[35]:='011010000';
  Code[36]:='_';Info[36]:='010000010';
  Code[37]:='.';Info[37]:='110000100';
  PL:= 37;
  for i:=0 to Pl Do  begin
    if( UpperCase(Code[i])=UpperCase(s)) Then begin
        Result :=Info[i];exit;
    End;
  End;
End;