Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Delphi |
![]() ![]() |
Doffik Member Откуда: Сообщений: 1 |
Нужно создать програму, которая при вводе в строку 13 чисел (Штрих-кода) будет показывать изготовителя, то есть страну и показывает совпадает ли контрольная сумма. Все страны и их коды есть в текстовом документе. Как сделать так чтоб програма считывала код который я ввожу и показывала страну и совпадает ли контрольная сумма? |
14 апр 18, 13:14 [21339018] Ответить | Цитировать Сообщить модератору |
X11 Member Откуда: Kharkiv, Ukraine Сообщений: 11793 |
Здесь форум программистов, а не фрилансеров. |
14 апр 18, 13:22 [21339053] Ответить | Цитировать Сообщить модератору |
DarkMaster Member Откуда: Donetsk,Ukraine Сообщений: 5810 |
Запрограммировать считывание кода, поиск страны в справочнике, расчет контрольной суммы и ее сравнение с эталоном. |
||
16 апр 18, 09:31 [21341533] Ответить | Цитировать Сообщить модератору |
fraks Member Откуда: Новосибирск Сообщений: 1289 |
Проверка контрольного разряда:function CheckEAN13(EAN13: string; ShowMessage : boolean = False): boolean; var s: string; i, uControl1, uControl2, uControl: integer; begin Result := False; if Length(EAN13) <> 13 then begin if ShowMessage then Application.MessageBox('Штрих-код EAN13 должен состоять из 13 цифр.', 'Проверка штрих-кода', MB_OK + MB_ICONWARNING); Exit; end;{if} {отрезаем контрольный разряд} s := copy(EAN13, 1, 12); {подсчет контрольного разряда заново} uControl1 := 0; uControl2 := 0; for i:=1 to length(s) div 2 do Inc(uControl1, StrToInt(copy(s, 1+i*2-2, 1))); for i:=1 to length(s) div 2 do Inc(uControl2, StrToInt(copy(s, 1+i*2-1, 1))); uControl := (uControl1 + uControl2*3) mod 10; if uControl > 0 then uControl := 10 - uControl; s := s + IntToStr(uControl); {} if (s = EAN13) then Result := True else if ShowMessage then Application.MessageBox('Штрих-код неверный. Не совпадает контрольный разряд.', 'Проверка штрих-кода', MB_OK + MB_ICONWARNING); end; |
16 апр 18, 09:53 [21341578] Ответить | Цитировать Сообщить модератору |
krapotkin Member Откуда: Екатеринбург Сообщений: 581 |
+пять копеек мне больше импонирует идея делить простыни кода на законченные структурные элементы вычисление кода и выдача сообщений имхо должны быть в разных процедурах |
16 апр 18, 10:11 [21341634] Ответить | Цитировать Сообщить модератору |
_Vasilisk_ Member Откуда: Украина, Харьков Сообщений: 10161 |
Привел в божеский вид
Exception лучше заменить на какой нибудь
EEAN13Error = class(Exception)
|
|
16 апр 18, 12:03 [21342041] Ответить | Цитировать Сообщить модератору |
Пылинка Member Откуда: СПб Сообщений: 206 |
fraks, Вот взялись вы его вытаскивать. А ведь вытащите - он вырастет и станет вашим или у кого то из нас, начальником. Потому что программистом работать не сможет просто физически. |
16 апр 18, 12:06 [21342052] Ответить | Цитировать Сообщить модератору |
fraks Member Откуда: Новосибирск Сообщений: 1289 |
С видом согласен. Сам писал эту функцию давно, и тоже кажется по чьим-то мотивам. Но работает по сей день. А детская ошибка специально в коде вставлена? :) |
||
16 апр 18, 12:23 [21342102] Ответить | Цитировать Сообщить модератору |
fraks Member Откуда: Новосибирск Сообщений: 1289 |
Вы так говорите как будто программист - венец природы и все остальные - недостойные смерды. Начальники так же нужны. Хватит ему характера стать начальником - ну и хорошо. Хорошим начальником - еще лучше. Не каждому дано стать программистом, но и не каждому дано стать начальником. |
||
16 апр 18, 12:34 [21342125] Ответить | Цитировать Сообщить модератору |
_Vasilisk_ Member Откуда: Украина, Харьков Сообщений: 10161 |
|
||
16 апр 18, 15:59 [21342826] Ответить | Цитировать Сообщить модератору |
_Vasilisk_ Member Откуда: Украина, Харьков Сообщений: 10161 |
|
||||
16 апр 18, 16:01 [21342832] Ответить | Цитировать Сообщить модератору |
Все форумы / Delphi | ![]() |