Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Экспертная система


Автор: Student00 3.2.2008, 12:52
Прогнали меня отсюдова
http://forum.vingrad.ru/forum/topic-192138/anchor-entry1400546/0.html
Пришел к вам помощи просить.
))

Вобщем куча проблем и очень мало решений...
---
Программа пишется на Delphi 7
---
Опишу ситуацию:
1) Сама программа предполагает:
Выбор бытовой техники. Когда пользователь не разбирающийся что к чему путем ответов на наводящие вопросы придет к оптимальному решению.

2) Интерфейс, как можно увидеть - вроде бы создан. 
Подгружаются вопросы. Сохраняются ответы (answers.ini)

3) Как можно увидеть формат записи (больше я ничего не придумал) текущих ответов RadioGroup1Click такой:
Код

[Item0]
Q0=0
Q1=1
Q2=2
Q3=0
Q4=2

где
[Item0] - группа товаров.
Q0 - номер вопроса.
0, 1, 2 - индексы ответов.

4) Первостепенная проблема такая:
Надо как-то суммировать все варианты ответов, но при этом, организовать код, так, чтобы if then свести к минимуму. Т.е. проще говоря, что бы пользователь-админ мог без вмешательство в код Delphi добавлять или удалять вопросы (с ответами конечно). А программа не кричала, что мол не найден вопрос.

Что касается самого добавления и удаления - это потом.

Главное сейчас организовать процедуру, которая как бы считывала из answers.ini параметры (текущий вид товара, количество вопросов по этому виду, ну и какие индексы ответов в текущий момент имеются), что бы вернувшись назад и снова ответив на вопросы новые индексы опять считывались и исходя из этого выдавался соответствующий ответ.

Как все это организовать в Delphi я понятия не имею. Возможна имеющаяся структура ini файлов не позволят это сделать?
Поэтому прошу, пожалуйста, товарищи, помогите!!!!!!!!




Автор: lukas 3.2.2008, 17:13
я не пойму в чем проблема? записать это в ини файл или придумать систему распознавания N-кол-во вопросов?

в ини можно записать что угодно, любое дерево можно представить в плоской записи....

Автор: Qu1nt 3.2.2008, 17:33
Я бы использовал XML.

Автор: Student00 3.2.2008, 21:17
Цитата(Qu1nt @ 3.2.2008,  17:33)
Я бы использовал XML.

А поддерживает ли Delphi 7 такой формат В смысле для ini файл есть такой модуль uses: IniFiles
и класс (м/б не класс): TIniFile
А для xml есть что-нить подобное?

Автор: EvilsInterrupt 3.2.2008, 22:34
Student00, Ну сколько можно упомянать про XML Data Binding блин ??? Я уже одному тут на форуме алгоритм, как и что жать и как применять на деле показал!!!

Автор: Student00 4.2.2008, 02:27
Цитата(EvilsInterrupt @ 3.2.2008,  22:34)
Student00, Ну сколько можно упомянать про XML Data Binding блин ??? Я уже одному тут на форуме алгоритм, как и что жать и как применять на деле показал!!!

Блин я все нафиг переделал.
Решил в качестве БД использовать не какой-то ini, а полноценную БД на Microsoft Office Access 2003
Поэтому возможно в этом разделе тема опять не прокатит.

Вот не знаю опять создавать тему или же постить здесь?
Просьба скачать файл прежде чем читать дальше

1) Как видно на первой странице мы в компонент DBLookupComboBox1 из BD.mdb  присваеваем значения из таблицы "kat".
2) Переходим на следующую страницу и начинаются проблемы:
Компонент DBLookupListBox1 должен отображать список вопросов, соответствующих выбранной на первом шаге категории. Для этого он обращается к таблице "vopros", но выводятся все вопросы какие есть в таблице.

Подскажите пожалуйста что нужно сделать чтобы было как должно быть. Возможно нужно подругому организовать БД, возможно нужно что-то сделать (прописать в коде, либо может компонент какой бросить или заменить) - я не знаю.

Автор: D7_beginner 4.2.2008, 11:31
Цитата(Student00 @  4.2.2008,  02:27 Найти цитируемый пост)
Подскажите пожалуйста что нужно сделать чтобы было как должно быть. Возможно нужно подругому организовать БД, возможно нужно что-то сделать (прописать в коде, либо может компонент какой бросить или заменить) - я не знаю.


Все же просто. Укажите второму АДО(у тебя ADOTable2) Master Source на DataSource1 и сопоставьте поля в MasterFields(id_kat-id_kat).

Автор: Insert 4.2.2008, 11:53
Раз такой разговор пошел, то в идеале пользовать нейросети.

Автор: Student00 4.2.2008, 16:30
Проблема опять такая:
Выбрав из компонента DBLookupListBox1 строку, т.е совершив событие onClick
обращаемся к БД таблице otvet и получаем список ответов соответствующих выбранному вопросу.
Компонент DBRadioGroup1 как бы принимает эти данные о количестве ответов и динамически добавляет нужное количество радиокнопок.
Пробовал как и раньше MasterFields, Датасоурсы, тейбл, Квери... Ничего не получается.
Возможно необходимо программно прописать. Пытался реализовать и это но ничего не получилось:
Код

DBRadioGroup1.Items.Add(?);

Так д/б быть но на самом деле этого нет.


Помогите, пожалуйста сделать. ))

Прилагаю последнюю версию программы.

Автор: Student00 4.2.2008, 19:00
up

Автор: Student00 4.2.2008, 21:11
Код

procedure TForm1.DBLookupListBox1Click(Sender: TObject);
begin
while ADOTableRadio1.Eof <> true do
begin
DBRadioGroup1.Items.Add('select count(*) from otvet where id_vopros = :id_vopros');
end;
end;


Вроде бы программа запускается, но когда совершаю указанное событие - зависает и в месте, где д/б радио кнопки - что-то похожее на вкл/выкл.

Есть подозрения, что написана фигня.

Автор: D7_beginner 5.2.2008, 06:53
Держите пример думаю это то что вы хотели

Автор: Student00 5.2.2008, 09:02
Цитата(D7_beginner @ 5.2.2008,  06:53)
Держите пример думаю это то что вы хотели

Огромное вам спасибо!!! )))

Автор: optik 13.5.2008, 18:34
автор, будь добр, скинь пожалуйста проект который запускается без ошибок, а то прога, прикреплённая в последнем сообщении почему то не особо пашет (говорит что не хватает какого то компонента XPMan, предлагает его удалить и потом соответсвенно не работает) или подскажи вкратце как запустить прожку правильно?

Автор: ZBugz 15.5.2008, 07:36
Цитата(optik @ 13.5.2008,  18:34)
говорит что не хватает какого то компонента XPMan, предлагает его удалить и потом соответсвенно не работает

Поставь Делфи 7 и выше.

Автор: SneG0K 15.5.2008, 08:40
Цитата(optik @  13.5.2008,  17:34 Найти цитируемый пост)
что не хватает какого то компонента XPMan

Я полагаю, что это XPManifest, а он никакой роли в программе не играет. Он только отвечает за прорисовку компонентов как в XP а не 9х

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)