Форум: "Прочее";
Текущий архив: 2008.11.09;
Скачать: [xml.tar.bz2];
ВнизПомогите упростить код и проверить правильно ли написан он.... Найти похожие ветки
← →
RaMoNeZz (2008-09-13 00:55) [0]Доброго времени суток! Вообщем у меня кое какие затруднение появились...
есть база, в ней имееться справочник Наименований(обычный текстовый файлик с наименованиями, для упрощения ввода данных). появилась проблема при добавлении новой записи в справочник проверить есть ли такая запись в справочнике или нет если нет добавить... я написал вот так, вроде работает, но мне кажеться что то тут не так....
//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;
как эту кашу упростить? помогите пожалуйста
← →
Andy BitOff © (2008-09-13 01:31) [1]Отформатируй для начала.
← →
Плохиш © (2008-09-13 01:32) [2]
> как эту кашу упростить?
Стереть нафик этот бред из многа букав.
← →
Zeqfreed © (2008-09-13 01:35) [3]
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;
Хотя, использовать визуальные контролы в качестве хранилища это еретично :)
← →
Zeqfreed © (2008-09-13 01:36) [4]Ну и, кстати, после сохранения брейк/экзит тоже надо.
← →
Германн © (2008-09-13 01:49) [5]
> Andy BitOff © (13.09.08 01:31) [1]
Эт точно. Читать код в таком виде очень вредно для здоровья.
← →
RaMoNeZz © (2008-09-13 10:38) [6]Zeqfreed © Спасибо попробую! этот справочник просто упрощение для ввода данных...я пока учусь не ругайте сильно:)
← →
RaMoNeZz © (2008-09-13 10:47) [7]Вот так проще?
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;
← →
Simpson © (2008-09-13 10:59) [8]Если ты илспользуеш 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;
Зачем усложнять?
Помойму так
зы
Код писался просто по памяти, возможные ошибки исправляй сам.
← →
sniknik © (2008-09-13 12:27) [9]> Вот так проще?
вместо if proverka=1 then пишеш
if dbcombobox1.Items.indexof(dbcombobox1.Text) = -1 then
ну и выкинуть все что выше в коде (цикл).
но конечно целевое использование компонент у тебя... или это просто название, а на самом деле обычный комбобокс? ну типа раз пишешь базу то добавил db к названиям, а декларацию типа естественно не показал, типа неважно это... (как всегда в общем, все партизанят, а в итоге вместо обсуждения вопроса обсуждают что ты неправильно делаешь)
← →
RaMoNeZz © (2008-09-13 12:49) [10]Если ты илспользуеш DB контролы то зачем это все?
Составь запрос "select * from someTable where stroka like "%то что нужно%"", и все. Если у тебя текстовый файл, то зачем DB контролы? точно так же можно пройтись по всему файлу
dbконтролы используються у меня для добавления записей именно в таблицу тоесть контролы настроены на таблицу а список подгружаеться из обычного файла чтоб не приходилось постоянно писать одни и те же строки, так сказать вспомогательный...
"база"-"добавить запись"-"открываеться форма", там дбэдиты и дбконтролы, в контролы загружаються файлики для упрощенки, есть одельная форма для довавления в эти файлы, весь выше код просто чтоб если ты уже добавляешь запись а в списке нет такого "наименования" то добавить чтоб заного не писать...вроде так:)
← →
Simpson © (2008-09-13 14:49) [11]Заведи таблицу справочник получиш все тоже только без гемора.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2008.11.09;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c