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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2009, 20:02   #1
vlad00777
Пользователь
 
Регистрация: 10.09.2009
Сообщений: 20
По умолчанию Генерация Штрихкода

Всем привет.
Помогите пожалуйста нужно написать на курсовую криптор который шифрует текст в виде штрих кода. Штрих код должен быть не длинным тоесть кодировать 1 символ нет смысла и вообще я несовсем понимаю как это сделать.
Всем спасибо.
vlad00777 вне форума Ответить с цитированием
Старый 11.09.2009, 02:33   #2
Олвин
Экспериментатор
Форумчанин
 
Аватар для Олвин
 
Регистрация: 16.04.2008
Сообщений: 218
По умолчанию

Если у штрихкода только два варианта толщины линии, то это равносильно кодированию нулями и единицами. Не путай кодирование с шифрованием! Кодирование - это просто способ представления информации, а шифрование - её защита.
"Кодировать 1 символ нет смысла" - имеется в виду, что нужно установить минимальное количество бит на символ текста, которое можно рассчитать по формуле:
Код:
N=2^X
где X - количество бит (его нам надо узнать), а N - число символов в алфавите (оно нам известно).

А потом просто берём номер символа (а пронумеровать их можно как вздумается, по своему) и конвертируем его в двоичное представление. Всё! Смотрим на получившееся двоичное число: если 0 - рисуем тонкую линию (штрихкод-то - нарисовать на экране надо, или чего с ним сделать?), иначе - толстую. (а можно наоборот - мы ведь собственную кодировку придумываем!)

Что не понятно - пиши. (в тч в личку)
Для создания сложных вещей не нужны сложные интерфейсы. (с) Линус Торвальдс

Последний раз редактировалось Олвин; 11.09.2009 в 02:36.
Олвин вне форума Ответить с цитированием
Старый 11.09.2009, 05:47   #3
GROWZER
Пользователь
 
Аватар для GROWZER
 
Регистрация: 16.06.2009
Сообщений: 47
По умолчанию

Цитата:
Сообщение от Олвин Посмотреть сообщение
если 0 - рисуем тонкую линию (штрихкод-то - нарисовать на экране надо, или чего с ним сделать?), иначе - толстую. (а можно наоборот - мы ведь собственную кодировку придумываем!)
нелогично лучче сделать
0 - нету линии
1 - есть линия
линии и место без линии одинаковой определенной ширины для дальнейшого анализа

Просто если брать разную ширину линий нужно будет между ними ставить отступы а это лишнее место...
GROWZER вне форума Ответить с цитированием
Старый 11.09.2009, 10:00   #4
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Вот тут немного интересного по этой теме. Там же пример штрих-кода
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 12.09.2009, 13:29   #5
vlad00777
Пользователь
 
Регистрация: 10.09.2009
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Олвин Посмотреть сообщение
Если у штрихкода только два варианта толщины линии, то это равносильно кодированию нулями и единицами. Не путай кодирование с шифрованием! Кодирование - это просто способ представления информации, а шифрование - её защита.
"Кодировать 1 символ нет смысла" - имеется в виду, что нужно установить минимальное количество бит на символ текста, которое можно рассчитать по формуле:
Код:
N=2^X
где X - количество бит (его нам надо узнать), а N - число символов в алфавите (оно нам известно).

А потом просто берём номер символа (а пронумеровать их можно как вздумается, по своему) и конвертируем его в двоичное представление. Всё! Смотрим на получившееся двоичное число: если 0 - рисуем тонкую линию (штрихкод-то - нарисовать на экране надо, или чего с ним сделать?), иначе - толстую. (а можно наоборот - мы ведь собственную кодировку придумываем!)

Что не понятно - пиши. (в тч в личку)
А дешифрование файла будет происхрдить привильно?
И так получиться очень длинный штрих код?
vlad00777 вне форума Ответить с цитированием
Старый 13.09.2009, 01:34   #6
Олвин
Экспериментатор
Форумчанин
 
Аватар для Олвин
 
Регистрация: 16.04.2008
Сообщений: 218
По умолчанию

Дешифрование - т.е. из штрих-кода обратно? Ну так если всё правильно сделать - то и дешифрование (вернее декодирование!) произойдёт правильно.
А длина штрих-кода зависит от объёма кодируемой информации. Напрямую зависит, иначе и не может быть. На продуктах-то в штрих-коде всего лишь номер закодирован.
Для создания сложных вещей не нужны сложные интерфейсы. (с) Линус Торвальдс
Олвин вне форума Ответить с цитированием
Старый 13.09.2009, 10:42   #7
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

вот пример
ввести слово---->кнопка кодировать----->кнопка нарисовать а вот декодирование надо будет сделать!
Вложения
Тип файла: rar Project1.rar (167.6 Кб, 29 просмотров)
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 13.09.2009, 12:29   #8
vlad00777
Пользователь
 
Регистрация: 10.09.2009
Сообщений: 20
По умолчанию

Цитата:
Сообщение от ОДИНОЧЕСТВО В СЕТИ Посмотреть сообщение
вот пример
ввести слово---->кнопка кодировать----->кнопка нарисовать а вот декодирование надо будет сделать!
а на исходник посмотреть можно?
vlad00777 вне форума Ответить с цитированием
Старый 13.09.2009, 12:32   #9
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Цитата:
Сообщение от ОДИНОЧЕСТВО В СЕТИ Посмотреть сообщение
вот пример
ввести слово---->кнопка кодировать----->кнопка нарисовать а вот декодирование надо будет сделать!
Induc!
Когда вы уже почистите делфи
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 13.09.2009, 12:40   #10
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

Код:
function alpha(c:char):integer;
begin
case c of
'а': result:=1;
'б': result:=2;
'в': result:=3;
'г': result:=4;
'д': result:=5;
'е': result:=6;
'ё': result:=7;
'ж': result:=8;
'з': result:=9;
'и': result:=10;
'й': result:=11;
'к': result:=12;
'л': result:=13;
'м': result:=14;
'н': result:=15;
'о': result:=16;
'п': result:=17;
'р': result:=18;
'с': result:=19;
'т': result:=20;
'у': result:=21;
'ф': result:=22;
'х': result:=23;
'ц': result:=24;
'ч': result:=25;
'ш': result:=26;
'щ': result:=27;
'ъ': result:=28;
'ы': result:=29;
'ь': result:=30;
'э': result:=31;
'ю': result:=32;
'я': result:=33;
'a': result:=34;
'b': result:=35;
'c': result:=36;
'd': result:=37;
'e': result:=38;
'f': result:=39;
'g': result:=40;
'h': result:=41;
'i': result:=9+33;
'j': result:=10+33;
'k': result:=11+33;
'l': result:=12+33;
'm': result:=13+33;
'n': result:=14+33;
'o': result:=15+33;
'p': result:=16+33;
'q': result:=17+33;
'r': result:=18+33;
's': result:=19+33;
't': result:=20+33;
'u': result:=21+33;
'v': result:=22+33;
'w': result:=23+33;
'x': result:=24+33;
'y': result:=25+33;
'z': result:=26+33;
'.': result:=60;
'!': result:=61;
'?': result:=62;
':':result:=63;
'-':Result:=64;
else result:=-1;
end

end;

function IntToBin(d: Longint): string;
 var
   f:Boolean;
   x: Integer;
   bin,bin1: string;
 begin
   f:=False;
   bin := '';
   for x := 1 to 8 * SizeOf(d) do
   begin
     if Odd(d) then bin := '1' + bin
     else
       bin := '0' + bin;
     d := d shr 1;
   end;
   Delete(bin, 1, 8 * ((Pos('1', bin) - 1) div 8));
   bin1:='';
   for x:=1 to Length(bin) do begin
        if bin[x]='1' then
        begin
          f:=True;
          bin1:=bin1+bin[x];
        end;
       if (bin[x]='0') and f
       then  bin1:=bin1+bin[x];end;
       result:=bin1;
  end;
function CharToBin(c:char):string;
begin
  if (c<>' ') and (alpha(c)<>-1) then
result:=IntToBin(alpha(c))
 else result:='   ';
end;

procedure TForm1.btn1Click(Sender: TObject);
var s1:string;
    i:Integer;
begin
  s:='';
  s1:=edt1.Text;
  for i:=1 to Length(s1) do
 s:=s+' '+CharToBin(s1[i]);


 ShowMessage(s);
 btn2.Enabled:=True;
end;

procedure TForm1.btn2Click(Sender: TObject);
var x,k,y:Integer;
begin
x:=20;
y:=20;
with img1.Canvas do begin
 Pen.Width:=2;
 Pen.Color:=clGreen;
 for k:=1 to Length(s) do
 begin
  if s[k]='0' then
     begin
   MoveTo(x,y);
   LineTo(x,y+25);
   x:=x+4;
   end;

  if s[k]=' ' then

  x:=x+8


  else
   begin
   MoveTo(x,y);
   LineTo(x,y+30);
   x:=x+4;
   end;
 end;
 end;
 end;
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Генерация текста apocalypce Помощь студентам 4 10.08.2009 13:01
Генерация случайных... Яр|/||< (^_^) Общие вопросы Delphi 2 22.06.2009 21:33
Программа для расшифровки штрихкода Sanek777 Софт 5 27.10.2008 21:41
Генерация звука N!ckeL Общие вопросы Delphi 1 19.06.2008 09:19
генерация паролей ozhjog Общие вопросы Delphi 3 02.07.2007 08:20