|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.05.2011, 20:15 | #1 |
Пользователь
Регистрация: 11.02.2011
Сообщений: 31
|
Тест. Проблема с CheckListBox
БД в Access, связь с БД через ADO.
В БД хранятся вопросы к тесту и ответы на них. Существует три типа вопросов(1 правильный (RadioGroup), несколько правильных (CheckListBox), ответ -строка (Edit)). Ответы в БД типа string. Подскажите как обработать случай когда несколько правильных ответов, т.е как проверить отмеченные в CheckListBox'е строчки с номерами правильных ответов. ПРИМЕР: Правильный ответ: 1 3 4 (БД), значит в CheckListBox должны быть отмечены 0,2,3 строчки. Как это сделать??? Моя функция проверки правильности ответа: Код:
|
27.05.2011, 21:32 | #2 |
Форумчанин
Регистрация: 08.09.2010
Сообщений: 880
|
Без дополнительного параметра, через который передаются правильные ответы, скорее всего, не обойтись.
Код:
|
27.05.2011, 21:39 | #3 |
Пользователь
Регистрация: 11.02.2011
Сообщений: 31
|
А можете еще на словах описать?) я не уверен что до конца понял алгоритм(
|
27.05.2011, 21:55 | #4 |
Форумчанин
Регистрация: 08.09.2010
Сообщений: 880
|
"А" - параметр, динамический массив, в котором содержаться номера правильных ответов. К примеру, ([2, 4, 5]).
Не ясно в каком виде правильные ответы хранятся в БД, поэтому конкретно как массив "зарядить" пояснить не получится. В цикле проверяется соответствие отмеченных элементов чеклистбокса значениям в массиве. Если хотя бы один из этих элементов не отмечен, то функция возвращает False. |
27.05.2011, 21:59 | #5 |
Пользователь
Регистрация: 11.02.2011
Сообщений: 31
|
Не отмечен хотя бы один элемент индекс которого равен (значению в массиве-1), верно? а строка в бд так и хранится: 1 2 или 2 3 4 ну и т.п. или вы имели ввиду неупорядоченное хранение типа 2 1 4 или 3 2 4 к примеру?
|
27.05.2011, 22:06 | #6 |
Форумчанин
Регистрация: 08.09.2010
Сообщений: 880
|
Нет, неупорядоченность здесь не имеет значения.
Не было понятно, что правильные ответы в строковом представлении. Если бы ответы хранились в БД в виде: "1,3", т.е. номера через запятую, то было бы проще соорудить массив. |
27.05.2011, 22:08 | #7 |
Пользователь
Регистрация: 11.02.2011
Сообщений: 31
|
Т.е через функции работы со строками типа pos()? тогда не вижу разницы проверять на пробел или на запятую.
|
27.05.2011, 22:15 | #8 |
Форумчанин
Регистрация: 08.09.2010
Сообщений: 880
|
Ну, здесь вам и карты в руки. Какие средства, такие и возможности.
Разница небольшая есть в том, что строку, где потенциальные элементы расположены через запятую можно одним махом превратить в список (TStringList). Хотя, конечно, потом все равно придется с использованием цикла "заряжать" массив целочисленными значениями из списка. Понятно, что без цикла ни в случае с Pos, ни в случае TStringList не обойтись. В общем то, здесь все равно как. |
27.05.2011, 22:16 | #9 |
Пользователь
Регистрация: 11.02.2011
Сообщений: 31
|
ясно, спасибо большое) буду пробовать
|
28.05.2011, 12:27 | #10 |
Пользователь
Регистрация: 11.02.2011
Сообщений: 31
|
Сделал пока так:
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
CheckListBox | BALLIN | Помощь студентам | 4 | 14.04.2010 11:37 |
CheckListBox | jahongir007 | Общие вопросы Delphi | 4 | 07.06.2009 12:10 |
Checklistbox | RealSHELS | Общие вопросы Delphi | 3 | 30.07.2008 22:40 |
CheckListBox | ivp88 | Компоненты Delphi | 4 | 12.05.2007 15:49 |