Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.09.2015, 15:59   #1
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию Генератор штрих кода

Здравствуйте.
Подскажите, может кто встречал на просторах интернета компонент для генерации штрих кода. Интересует не визуальное отображение, а именно сами цифры, т.е. на форме combox, пользователь выбирает тип, например, EAN-13, нажимает генерировать и в EDIT появляется штрих код типа EAN-13.
tarakan1983 вне форума Ответить с цитированием
Старый 15.09.2015, 16:43   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Это не шутка?
Цифры внизу в коде EAN-13 - это те самые 12 цифр, которые Вы изначально кодируете + одна (13-я) - это цифра - контрольная сумма (checkdum didgit).
Вас интересует, как эту последнюю циферку посчитать?! Алгоритм есть на википедии.
Зачем какой-то компонент для этого?!

я уже не спрашиваю, зачем может такое вообще понадобиться. Ведь суть любых штрих-кодов - это именно в их графическом представлении, а не в том, что там внизу написано для человека...

Последний раз редактировалось Serge_Bliznykov; 15.09.2015 в 16:45.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.09.2015, 16:45   #3
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Это не шутка?
Цифры внизу в коде EAN-13 - это те самые 12 цифр, которые Вы изначально кодируете + одна (13-я) - это цифра контрольная сумма.
Вас интересует, как эту последнюю циферку посчитать?! Алгоритм есть на википедии.
Зачем какой-то компонент для этого?!

я уже не спрашиваю, зачем может такое вообще понадобится. Ведь суть любых штрих-кодов - это именно в их графическом представлении, а не в том, что там внизу написано для человека...
Прошу прощенья за глупый вопрос, просто недопонимал прочтенный материал. Теперь все понял.
tarakan1983 вне форума Ответить с цитированием
Старый 15.09.2015, 17:20   #4
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Я когда-то писал про вычисление контрольной цифры:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  l:integer;

implementation

{$R *.dfm}

function Test(s:string):boolean;
const int:array[0..9] of char=('0','1','2','3','4','5','6','7','8','9');
var i:integer;

   function t(c:char):boolean;
   var i:byte;
   begin
      Result:=false;
      For i:=0 to 9 do
         Result:=Result or (c=int[i]);
   end;

begin
   Result:=true and (l>0);
   For i:=1 to l do
      Result:=Result and t(s[i]);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   Caption:=Application.Title;
   Edit1Change(nil);
end;

procedure TForm1.Edit1Change(Sender: TObject);
var s:string;
    i:integer;

   procedure No;
   begin
      Label3.Caption:='';
      Label5.Caption:='';
      Label7.Caption:='';
      Label9.Caption:='';
      Label11.Caption:='';
      Label13.Caption:='';
      Label15.Caption:='';
      Label16.Caption:='';
   end;

   function Schet:integer;
   var i,c1,c2:integer;
       s1:string;
   begin
      s1:='';
      c1:=0;
      For i:=1 to l do
         If i mod 2=1 then
         begin
            If s1<>'' then
               s1:=s1+' + ';
            s1:=s1+s[i];
            c1:=c1+StrToInt(s[i]);
         end;
      s1:=s1+' = '+IntToStr(c1);
      Label3.Caption:=s1;
      s1:=IntToStr(c1)+' x 3 = ';
      c1:=c1*3;
      s1:=s1+IntToStr(c1);
      Label5.Caption:=s1;
      s1:='';
      c2:=0;
      For i:=1 to l do
         If i mod 2=0 then
         begin
            If s1<>'' then
               s1:=s1+' + ';
            s1:=s1+s[i];
            c2:=c2+StrToInt(s[i]);
         end;
      If s1='' then
         s1:='0';
      s1:=s1+' = '+IntToStr(c2);
      Label7.Caption:=s1;
      s1:=IntToStr(c1)+' + '+IntToStr(c2)+' = ';
      c1:=c1+c2;
      s1:=s1+IntToStr(c1);
      Label9.Caption:=s1;
      s1:=IntToStr(c1);
      c1:=Length(s1);
      s1:=s1[c1];
      c1:=StrToInt(s1);
      Label11.Caption:=s1;
      s1:='10 - '+IntToStr(c1)+' = ';
      c1:=10-c1;
      s1:=s1+IntToStr(c1);
      Label13.Caption:=s1;
      If c1=10 then
         c1:=0;
      Label15.Caption:=IntToStr(c1);
      Result:=c1;
   end;

begin
   l:=Length(Edit1.Text);
   s:='0';
   If l>0 then
      s:=Edit1.Text[l];
   RadioButton1.Caption:='Проверить контрольную цифру '+s;
   If not Test(Edit1.Text) then
   begin
      No;
      Exit;
   end;
   s:='';
   If RadioButton1.Checked then
      l:=l-1;
   If l=0 then
   begin
      No;
      Exit;
   end;
   For i:=l downto 1 do
      s:=s+Edit1.Text[i];
   i:=Schet;
   If RadioButton1.Checked then
   begin
      s:=Edit1.Text[l+1];
      If s=IntToStr(i) then
         Label16.Caption:='Верно: '+s else
         Label16.Caption:='Неверно: '+s+' <> '+IntToStr(i);
   end else
      Label16.Caption:='';
end;

end.
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сканер штрих кода и поиск Незнайка11 Microsoft Office Access 5 08.02.2014 20:34
сканнер штрих-кода chuchxella WPF, UWP, WinRT, XAML 1 01.08.2012 15:36
Вывод штрих-кода на листе MS Word olo_lo Microsoft Office Word 0 02.06.2012 17:48
генерация штрих кода Oksa22 Помощь студентам 4 08.03.2010 14:27