Комментарии 33
Просто жесть. Можно было хоть библиотеку оформить. Или что-то новое рассказать. Хотя чего тут нового может быть?
В интернете сего добра просто навалом. Например, GenCode128.
В интернете сего добра просто навалом. Например, GenCode128.
+3
Целью написания статьи было ознакомить человека как написать самому подобный генератор. Хотя я и не дал много ссылок, я специально выложил весь код, по которому можно понять как программа работает. Думаю, что смотря информацию в интернете и имея данный код, существенно проще написать что-то свое более функциональное. Также я планирую написать статтю о генерации 2D кодов. Как идея?
+2
может простыню кода лучше вынести в pastebin-подобный сервис? :)
+2
Вообще, подобного рода код самостоятельно стоит писать в очень редких случаях, я бы сказал никогда. Намного проще обернуть существующую библиотеку, например.
Кроме того, зачем же выставлять напоказ такие портянки страшного кода?
Кроме того, зачем же выставлять напоказ такие портянки страшного кода?
+3
Если тебе надо только результат — да, проще использовать библиотеку. НО если тебе нужно будет реализовать, например свой формат штрих кода, то нужно понимать как механизм работает. Иначе просто не сделаешь. И кроме того, зная и имея алгоритм, создать библиотеку можно без особого труда. А вот без знания алгоритма, не составишь.
+2
Именно здесь есть тег habracut. Но он почему-то не работает. Кроме того, я дал ссылку в статье на кодирование форматом Code128. Она почему то для меня не видна, хотя в HTML коде есть. Так что я наверное прислушаюсь вас и выложу код на pastebin.
0
Детальная информация об алгоритме кодирования и о расчете контрольной цифры есть тут:
а по точнее?
а по точнее?
0
Теперь и в статье ссылка должна быть.
www.barcodeman.com/info/c128.php3
www.barcodeman.com/info/c128.php3
0
Спрячьте этот код!
Использовать конкатенацию в стринг string — моветон, это собственно азы программирования .net, для этого есть StringBuilder.
Названия переменных lst, htb, z, zz (!) и тп. просто так и просятся переимноваться.
Использовать конкатенацию в стринг string — моветон, это собственно азы программирования .net, для этого есть StringBuilder.
Названия переменных lst, htb, z, zz (!) и тп. просто так и просятся переимноваться.
+1
Так и сделал, кому надо мой код — он есть на PasteBin
0
не надо везде пихать StringBuilder, если дело происходит не в цикле на 100500 итераций, то это экономия на спичках.
+5
Это «правила хорошего тона».
Теперь представьте, что этот код начали использовать в производстве, к примеру в автоматизированных системах, где вдруг этот метод должен вызываться, как вы выразились, 100500 раз.
В итоге на вот таких вот «спичках» мы получаем провал в производительности. А потом начнутся разговоры, что C# ерунда, это только для домохозяей и в сложных, крупных проектах его использовать нельзя.
Теперь представьте, что этот код начали использовать в производстве, к примеру в автоматизированных системах, где вдруг этот метод должен вызываться, как вы выразились, 100500 раз.
В итоге на вот таких вот «спичках» мы получаем провал в производительности. А потом начнутся разговоры, что C# ерунда, это только для домохозяей и в сложных, крупных проектах его использовать нельзя.
0
Еще раз напишу, что целью написания статьи была дать представление и показать на примере. Мой код действительно написан без правил хорошего тона. А что касается
То данный код вставлен другой моей программой, которая пропарсила HTML, и извлекла данные из таблицы кодов. Я признаю ( и тут никак не поспоришь) что код написан «на скорую руку».
lst = new List(){ " ","!","\"","#",… }
То данный код вставлен другой моей программой, которая пропарсила HTML, и извлекла данные из таблицы кодов. Я признаю ( и тут никак не поспоришь) что код написан «на скорую руку».
+2
Ладно, с хорошим тоном все ясно, а что насчет обилия «магических констант» в коде? Что все эти цифры означают? Вы сказали, что целью было показать, как написать свой генератор и даже выложили весь код, по которому якобы можно понять, как программа работает. Но, глядя в ваш код, все, что я понимаю, это что без чтения дополнительного материала (в том числе и по ссылке в тексте) ничего понять вообще нельзя.
-1
lst = new List<string>();
lst.Add(" ");
lst.Add("!");
lst.Add("\"");
lst.Add("#");
...
Брюки превращаются:
lst = new List<string>(" !\"#...".ToCharArray().Select(c => c.ToString())
Для htb сильно подойдут инициализаторы коллекций, а код EAN13 и правда лучше спрятать, порефакторить, а потом уже показывать.
-3
Каким образом проходил проверка с ABBYY?
0
Я сделал на форме кнопку, которая копировала изображение самого кода в буфер обмена. Так же можно сделав снимок экрана, самому найти код. Далее нужно вставить изображение в FineReader. У меня лицензионная версия FineReader Professional, и она у меня сама определила, что это штрих код, и чему он равен.
0
А как быть с PDF417?
0
Неделя говнокода на хабре?
+14
НЛО прилетело и опубликовало эту надпись здесь
Хотя бы ссылки на википедию по этим двум форматам стоит добавить и рассказать что-нибудь про их историю. Например о том, что EAN-13 это самый распространенный код для маркировки товаров. А также то, что в EAN-13 одна цифра не кодируется явно через последовательность черных и белых штрихов, а кодируется через выбор L или G кодов для первых 6 цифр. Еще стоило бы сказать, что есть такой тип баркода UPC-A, который является предком и подмножеством EAN-13, и у которого не было этой веселухи с 13-й цифрой.
0
А вообще, для всех основных типов баркодов в интернете есть их генераторы, и даже можно найти бесплатные и с открытым исходным кодом. Бесплатных распознавалок меньше, но тоже есть.
PS. Скажу спасибо тому, кто найдет бесплатную распознавалку MaxiCode
PS. Скажу спасибо тому, кто найдет бесплатную распознавалку MaxiCode
0
+1
С принтерами штрих-кодов всегда идут драйвера + библиотеки на все случаи жизни и почти все платформы.
Нет проблем с юнитами и безобразными искажениями, с 1D, 2D кодами, текстом и графиком в одной этикетке.
Нет проблем с юнитами и безобразными искажениями, с 1D, 2D кодами, текстом и графиком в одной этикетке.
0
Хэх. Мы такую фигную в универе(КПИ ФПМ) как курсач писали. Только у нас оно учитывало угол поворота, ему было пофик на размер штрихкода(т.е. можно было закодировать, потом расайзнуть и наша прога раскодировала его без особых проблем). Кароче у нас вам бы тройку еле еле поставили бы.
0
Слабовато для курсовой, вообще говоря…
0
За один день курсовую не напишешь. Кстати, никто вам бесплатно не напишет хороший код. Я согласен, что прога дырявая, но согласитесь, что она может помочь в изучении материала и дать представление о принципе работы.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Штриховое кодирование: программная реализация на С#