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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2014, 02:50   #1
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию Помогите упростить код

У меня по нажатию одной кнопки в БД происходит несколько изменений. Все эти изменения я делаю отдельными функциями и хочу каждую проверять на ошибки. Но у меня получается через чур длинный код. Помогите упростить.
Код:
procedure TForm1.Button1Click(Sender: TObject);
  var
    s : string;
    tr : Boolean;
begin
  tr:=True;
  while tr do
    begin
      s:=Raz;
      if s<>'' then Break;
      s:=dva;
      if s<>'' then Break;
      s:=tri;
      if s<>'' then Break;
      s:=chetire;
      if s<>'' then Break;
      s:=pyat;
      if s<>'' then Break;
      Exit;
    end;
  if s<>'' then Application.MessageBox(PChar(s), 'Ошибка', MB_OK + MB_ICONSTOP
    + MB_TOPMOST);
end;

function TForm1.Raz: string;
begin
  Result:='';
end;

function TForm1.dva: string;
begin
  Result:='';
end;

function TForm1.tri: string;
begin
  Result:='ошибка'; // Здесь, допустим, есть ошибка при выполнении функции 
end;

function TForm1.chetire: string;
begin
  Result:='';
end;

function TForm1.pyat: string;
begin
  Result:='';
end;
tarakan1983 вне форума Ответить с цитированием
Старый 02.03.2014, 03:18   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

а где код?
eval вне форума Ответить с цитированием
Старый 02.03.2014, 03:19   #3
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,869
По умолчанию

Цитата:
Но у меня получается через чур длинный код
Хотелось бы увидеть этот "через чур длинный код".
northener вне форума Ответить с цитированием
Старый 02.03.2014, 03:25   #4
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
  var
    s : string;
    tr : Boolean;
begin
  tr:=True;
  while tr do
    begin
      s:=Raz;
      if s<>'' then Break;
      s:=dva;
      if s<>'' then Break;
      s:=tri;
      if s<>'' then Break;
      s:=chetire;
      if s<>'' then Break;
      s:=pyat;
      if s<>'' then Break;
      Exit;
    end;
  if s<>'' then Application.MessageBox(PChar(s), 'Ошибка', MB_OK + MB_ICONSTOP
    + MB_TOPMOST);
end;
Здесь бывает до 20 функций.
На каждую писать if s<>'' then Break ?
или можно как-то это сократить?

Может я неправильно выразился, просто куча if..then нарушает "красоту"

Последний раз редактировалось tarakan1983; 02.03.2014 в 03:29.
tarakan1983 вне форума Ответить с цитированием
Старый 02.03.2014, 03:32   #5
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,869
По умолчанию

Цитата:
Здесь бывает до 20 функций.
На каждую писать if s<>'' then Break ?
Если нельзя эти 20 функций свести в одну, то да. Каждый раз писать.
northener вне форума Ответить с цитированием
Старый 02.03.2014, 03:35   #6
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

Спасибо, а то я что-то засомневался и решил спросить у умных людей.
Прошу прощенья за то что отвлек от важных дел.
Я только учусь...
tarakan1983 вне форума Ответить с цитированием
Старый 02.03.2014, 03:54   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Посмотрите на "Исключения" - http://citforum.ru/programming/32less/les18.shtml.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 02.03.2014, 03:57   #8
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

так в том-то и вопрос какое может возникнуть исключение при присвоении стринговой переменной стрнгового значения?
tarakan1983 вне форума Ответить с цитированием
Старый 02.03.2014, 04:01   #9
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Так Вы сами выкидывайте исключение в функции. Еще можно попробовать сделать массив указателей на процедуры и вызывать их поочередно в цикле.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 02.03.2014, 04:06   #10
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

Я в функции так и пишу
Код:
function TForm1.pyat: string;
begin
  Result:='';
  try
    // Что-нибудь делаем
  except
    Result:='Ошибка этой функции'
  end;
end;
Цитата:
Еще можно попробовать сделать массив указателей на процедуры и вызывать их поочередно в цикле.
Можно пример?
tarakan1983 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Упростить код Gefo JavaScript, Ajax 9 22.03.2013 10:01
Упростить код and150382 Microsoft Office Excel 15 15.02.2013 17:21
помогите упростить код serafim09 Microsoft Office Excel 9 14.10.2009 15:01
Помогите упростить код Ralf_ru Помощь студентам 7 01.04.2009 17:17