Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Помощь по програме в Delphi / 11 сообщений из 11, страница 1 из 1
14.04.2018, 13:14
    #39630210
Doffik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь по програме в Delphi
Нужно создать програму, которая при вводе в строку 13 чисел (Штрих-кода) будет показывать изготовителя, то есть страну и показывает совпадает ли контрольная сумма. Все страны и их коды есть в текстовом документе. Как сделать так чтоб програма считывала код который я ввожу и показывала страну и совпадает ли контрольная сумма?
...
Рейтинг: 0 / 0
14.04.2018, 13:22
    #39630216
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь по програме в Delphi
Здесь форум программистов, а не фрилансеров.
...
Рейтинг: 0 / 0
16.04.2018, 09:31
    #39630597
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь по програме в Delphi
DoffikНужно создать програму, которая при вводе в строку 13 чисел (Штрих-кода) будет показывать изготовителя, то есть страну и показывает совпадает ли контрольная сумма. Все страны и их коды есть в текстовом документе. Как сделать так чтоб програма считывала код который я ввожу и показывала страну и совпадает ли контрольная сумма?

Запрограммировать считывание кода, поиск страны в справочнике, расчет контрольной суммы и ее сравнение с эталоном.
...
Рейтинг: 0 / 0
16.04.2018, 09:53
    #39630608
fraks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь по програме в Delphi
Проверка контрольного разряда:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
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;
...
Рейтинг: 0 / 0
16.04.2018, 10:11
    #39630618
krapotkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь по програме в Delphi
+пять копеек
мне больше импонирует идея делить простыни кода на законченные структурные элементы
вычисление кода и выдача сообщений имхо должны быть в разных процедурах
...
Рейтинг: 0 / 0
16.04.2018, 12:03
    #39630718
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь по програме в Delphi
Привел в божеский вид
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
procedure CheckEAN13(const EAN13: string);
const
  CCodeLen = 13;
var
  i, uControl1, uControl2, uControl: Integer;
begin
  if Length(EAN13) <> CCodeLen then
    raise Exception.Create('Штрих-код EAN13 должен состоять из 13 цифр.');

  {подсчет контрольного разряда заново}
  uControl1 := 0;
  uControl2 := 0;

  for i:=1 to (CCodeLen - 1) div 2 do begin
    Inc(uControl1, StrToInt(EAN13[i * 2 - 1]));
    Inc(uControl2, StrToInt(EAN13[i * 2]));
  end;
  uControl := (uControl1 + uControl2 * 3) mod 10;
  uControl := 10 - uControl;

  if IntToStr(EAN13[CCodeLen]) <> uControl then
    raise Exception.Create('Штрих-код неверный. Не совпадает контрольный разряд.');
end;


Exception лучше заменить на какой нибудь
Код: pascal
1.
EEAN13Error = class(Exception)
...
Рейтинг: 0 / 0
16.04.2018, 12:06
    #39630722
Пылинка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь по програме в Delphi
fraks,
Вот взялись вы его вытаскивать. А ведь вытащите - он вырастет и станет вашим или у кого то из нас, начальником. Потому что программистом работать не сможет просто физически.
...
Рейтинг: 0 / 0
16.04.2018, 12:23
    #39630742
fraks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь по програме в Delphi
_Vasilisk_Привел в божеский вид

С видом согласен.

Сам писал эту функцию давно, и тоже кажется по чьим-то мотивам.
Но работает по сей день.

А детская ошибка специально в коде вставлена? :)
...
Рейтинг: 0 / 0
16.04.2018, 12:34
    #39630750
fraks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь по програме в Delphi
Пылинкаfraks,
Вот взялись вы его вытаскивать. А ведь вытащите - он вырастет и станет вашим или у кого то из нас, начальником. Потому что программистом работать не сможет просто физически.

Вы так говорите как будто программист - венец природы и все остальные - недостойные смерды.
Начальники так же нужны. Хватит ему характера стать начальником - ну и хорошо. Хорошим начальником - еще лучше.
Не каждому дано стать программистом, но и не каждому дано стать начальником.
...
Рейтинг: 0 / 0
16.04.2018, 15:59
    #39630917
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь по програме в Delphi
fraksА детская ошибка специально в коде вставлена? :)Нет. А что там? Потому, что писал прямо в браузере
...
Рейтинг: 0 / 0
16.04.2018, 16:01
    #39630920
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь по програме в Delphi
fraksдетская ошибка_Vasilisk_
Код: pascal
1.
 IntToStr(EAN13[CCodeLen])

Это? Ну промахнулся немного :)
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Помощь по програме в Delphi / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]