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

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

Код: 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
Помощь по програме в Delphi
    #39630618
Фотография krapotkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+пять копеек
мне больше импонирует идея делить простыни кода на законченные структурные элементы
вычисление кода и выдача сообщений имхо должны быть в разных процедурах
...
Рейтинг: 0 / 0
Помощь по програме в Delphi
    #39630718
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привел в божеский вид
Код: 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
Помощь по програме в Delphi
    #39630722
Фотография Пылинка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks,
Вот взялись вы его вытаскивать. А ведь вытащите - он вырастет и станет вашим или у кого то из нас, начальником. Потому что программистом работать не сможет просто физически.
...
Рейтинг: 0 / 0
Помощь по програме в Delphi
    #39630742
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Привел в божеский вид

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

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

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

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

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


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