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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2008, 01:10   #1
RaMoNeZz
Пользователь
 
Регистрация: 13.09.2008
Сообщений: 16
По умолчанию Помогите упросить код...

Доброго времени суток! Вообщем у меня кое какие затруднение появились...
есть база, в ней имееться справочник Наименований(обычный текстовый файлик с наименованиями, для упрощения ввода данных). появилась проблема при добавлении новой записи в справочник проверить есть ли такая запись в справочнике или нет если нет добавить... я написал вот так, вроде работает, но мне кажеться что то тут не так....
Код:
//O_o
for i:=0 to dbcombobox1.Items.Count-1 do  //считаем сколько строк в справочнике 
 begin
if dbcombobox1.Items.Strings[i]=dbcombobox1.Text //проверка равен ли текст, строке
then  proverka2:=0    // если да, то проверка2 равна 0
 else proverka:=7;   // если нет, то проверка равна 7
 end;
 if (proverka=7) and (proverka2=1)  then  // если проверка равна 7 и проверка2 равна 1
 begin if application.MessageBox('Добавить запись?','В справочнике нет такой записи', mb_yesno)=id_yes // то вывдим диалоговое окошко, да или нет
 then
 dbcombobox1.Items.Add(dbcombobox1.Text); // елси да, тогда добовляем запись
dbcombobox1.savetofile('naimenovanie.dim'); сохраняю в файлик
//if d1.post.Modified then d1.post.Post;
//close;
end;
 end;
как эту кашу упростить? помогите пожалуйста
RaMoNeZz вне форума Ответить с цитированием
Старый 13.09.2008, 01:47   #2
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию

Код:
 proverka:=1;  //сразу подрузамиваем что такого текста нет
  for i:=0 to dbcombobox1.Items.Count-1 do //считаем сколько строк в справочнике 
  begin
     if dbcombobox1.Items.Strings[i]=dbcombobox1.Text //проверка равен ли текст, строке
     then begin
            proverka:=0;  
            break; //смысл продолжать дальше цикл если уже совпало? можно вообще выйти из процедуры
            //если нет необходимости выполнять её дальше, с помощью exit;
          end; 
  end;
  if proverka=1 then 
  begin 
    if application.MessageBox('Добавить запись?','В справочнике нет такой записи', mb_yesno)=id_yes // то вывдим диалоговое окошко, да или нет
    then dbcombobox1.Items.Add(dbcombobox1.Text); // елси да, тогда добовляем запись
    dbcombobox1.savetofile('naimenovanie.dim'); сохраняю в файлик
//if d1.post.Modified then d1.post.Post;
//close;
  end;
вот чё пришло в голову
dr.Chas вне форума Ответить с цитированием
Старый 13.09.2008, 10:46   #3
RaMoNeZz
Пользователь
 
Регистрация: 13.09.2008
Сообщений: 16
По умолчанию

Спасибо, я пока начинаю потихоньку...не знал что можно остановить цикл...из за этого 2 переменные мне это поможет
RaMoNeZz вне форума Ответить с цитированием
Старый 13.09.2008, 11:32   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

добавлю

if proverka=1 мы и так это знаем потому что, как только

proverka:=0 то мы заканчиваем цикл (break) значит это проверять не надо.
если проверять не надо то и переменная не нужна.

хотя нет пригодится чтобы знать результат после цикла.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 13.09.2008 в 11:34.
evg_m вне форума Ответить с цитированием
Ответ


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