-
Доброго времени суток! Вообщем у меня кое какие затруднение появились... есть база, в ней имееться справочник Наименований(обычный текстовый файлик с наименованиями, для упрощения ввода данных). появилась проблема при добавлении новой записи в справочник проверить есть ли такая запись в справочнике или нет если нет добавить... я написал вот так, вроде работает, но мне кажеться что то тут не так.... //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; как эту кашу упростить? помогите пожалуйста
-
Отформатируй для начала.
-
> как эту кашу упростить?
Стереть нафик этот бред из многа букав.
-
function confirmInsert() : Boolean;
begin
Result := (Application.MessageBox('Добавить запись?',
'В справочнике нет такой записи',
MB_YESNO) = id_yes);
end;
. . .
newTitle := comboTitles.Text;
filename := 'naimenovanie.dim';
for i := 0 to comboTitles.Items.Count - 1 do begin
currentTitle := comboTitles.Strings[i];
if (currentTitle = newTitle) then Exit;
if confirmInsert() then begin
comboTitles.Items.Add(newTitle);
comboTitles.SaveToFile(filename);
end;
end; Хотя, использовать визуальные контролы в качестве хранилища это еретично :)
-
Ну и, кстати, после сохранения брейк/экзит тоже надо.
-
> Andy BitOff © (13.09.08 01:31) [1]
Эт точно. Читать код в таком виде очень вредно для здоровья.
-
Zeqfreed © Спасибо попробую! этот справочник просто упрощение для ввода данных...я пока учусь не ругайте сильно:)
-
Вот так проще? proverka:=1; //сразу подрузамиваем что такого текста нет for i:=0 to dbcombobox1.Items.Count-1 do //считаем сколько строк в справочнике begin if dbcombobox1.Items.Strings[i]=dbcombobox1.Text //проверка равен ли текст, строке then begin proverka:=0; break; 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;
-
Если ты илспользуеш DB контролы то зачем это все? Составь запрос 'select * from someTable where stroka like '%то что нужно%'', и все. Если у тебя текстовый файл, то зачем DB контролы? точно так же можно пройтись по всему файлу
AssignFile(f,'MegaFile.txt'); Reset(f) while(not Eof(f))or(find)do begin Readln(f,str); find := LowCase(str) = LowCase(someText);//не забываем сравнивать в одном регистре текст end; CloseFile(f); Result := find;
Зачем усложнять? Помойму так
зы Код писался просто по памяти, возможные ошибки исправляй сам.
|