![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
тест на delphi
dima © (2004-08-02 11:21:00)Хочу сделать программу для тестирования. Тест загружаю из RTF в TRichedit. В местах, куда вводить ответы стоят пропуски _________ . Нужно, чтобы при нажатии на ______ появлялся TEdit и в него вводился ответ. А в конце теста при нажатии на кнопку «Проверить» ответы из TEditов сравнивались бы с ответами, которые находятся в этом же файле rtf. Правильных ответов может быть несколько. Кто-нибудь знает как это сделать?
GrayFace (2004-08-04 20:40:00) [21]Можно сделать так:
Так готовят:
Is ___(any_Any_ANY_aNy_anY_и т.д.)_body here?
Так выглядит:
Is ___body here?
т.е. идет столько подчеркиваний, сколько их должно получиться в результате, потом скобка, внутри которой правильные ответы разделяются подчерком, а заканчивается это все ')_'.
Как? Вначале обрабатываешь сам(изменяешь, запоминаешь позиции всех пропусков), потом через TMemoryStream пихаешь в Memo. А потом при клике спотришь SelStart и сравниваешь с позициями пропусков. Похоже, сделать тоже самое, используя RichEdit не так уж сложно, используя SelStart, SelLength и SelText: Делаем SelectAll - получаем в SelText текст в не-RTF виде. Надо изменить какой-то текст - ставь на него SelStart и SelLength и меняй SelText.
Sergey Kaminski © (02.08.04 17:41) [5]
или, напр., составить парсер, перемалывающий твой RTF-текст и создающий ран-тайм контролы.
Это ничем не лучше. Парсить RTF на таком уровне оченьсложно.
Юрий Зотов © (03.08.04 12:18) [14]
> Вопрос: Чем отличается певец от певицы?
Ну есть же вопросы, с которыми такой фокус пройдет или почти пройдет. Например, 2+2=___. Конечно, если ввести 4.00 или 4e1, то тест выдаст ошибку, но в большинстве случаев все будет ОК. А в тестах по русскому такой тип теста просто идеален.
KSergey (2004-08-04 19:39:00) [22]> dima (04.08.04 18:53) [31]
> у меня delphi ругается на строчке
>
> WB.Navigate('about:blank'); //чтобы документ был
> [Error] Unit1.pas(35): Undeclared identifier: 'WB'
Внимательнее читай, копи-пасте - этого мало.
> Romkin © (03.08.04 21:06) [27]
> Ну с html просто: нужен WB: TWebBrowser
dima (2004-08-04 18:53:00) [23]у меня delphi ругается на строчке
WB.Navigate('about:blank'); //чтобы документ был
[Error] Unit1.pas(35): Undeclared identifier: 'WB'
[Error] Unit1.pas(36): Undeclared identifier: 'OleCheck'
наверно, что-то у меня с руками:)))
Piter (2004-08-03 23:29:00) [24]Sergey Masloff (03.08.04 23:06) [29]
А чего вдруг на Вы перешел?
извини, это случайно
Sergey Masloff (2004-08-03 23:06:00) [25]Piter © (03.08.04 22:24) [28]
<offtop>
Когда они еще были текметрикс набрал не помню сколько но 0.01% лучше меня были. 4.8 чтоли ;-) Был на работе день - ну делать нечего было. Я прошел штук 10 тестов (разных) из них 6 или 7 на мастера ;-) Прислали целую пачку бумажек-сертификатов. А когда недавно было обсуждение ради интереса 4.2 или 4.3 набрал. А что? Все равно это ни фига не значит.
</offtop>
P.S А чего вдруг на Вы перешел? ;-)
Piter (2004-08-03 22:24:00) [26]Sergey Masloff (02.08.04 20:52) [9]
а сколько вы набирали балов на BrainBench?
Romkin (2004-08-03 21:06:00) [27]Ну с html просто: нужен WB: TWebBrowser, и строка с формой. В форме - что угодно, с кнопочкой. Грузим ее в WB.
Допустим, в S следующее:
что хочешь?
Грузим (через URL тоже можно, но больше полукило не пихнешь):
var
V: OleVariant;
HtmlDoc: IHTMLDocument2;
begin
WB.Navigate('about:blank'); //чтобы документ был
OleCheck(WB.Document.QueryInterface(IHTMLDocument2, HtmlDoc));
v := VarArrayCreate([0, 0], varVariant);
V[0] := S; //Содержимое
//и просто пишем в пустой документ...
//Как ни странно, VArray & PSafeArray - одно и то же :)
HtmlDoc.write(PSafeArray(TVarData(V).VArray));
HtmlDoc.close;
end;
В обработчике OnBeforeNavigate2 спокойно ждем, пока юзверь нажмет на кнопочку "Готово" :))
И получает список с введенными строками (не забывать об uses MSHTML, там много полезного)
var
p: pointer;
Fields: TStrings;
begin
if not (pos('ANSWER', uppercase(URL)) > 0) then exit;
if varIsArray(PostData) then
begin
P := varArrayLock(PostData);
try
Fields := TStringList.Create;
try
ExtractHeaderFields(['&'], ['+'], PChar(P), Fields, True);
with Fields do
FPostString := Utf8ToAnsi(Fields.Text); //Да тут куда угодно, это результат
finally
Fields.Free;
end;
finally
varArrayUnlock(PostData);
end;
end;
URL := 'about:blank'; //Опустошаем, нафиг оставлять
Вот и все, в FPostString - введенные строки, разделенные переводом строки.
dima (2004-08-03 20:39:00) [28]Расскажите,пожалуйста.
Sectey (2004-08-03 17:54:00) [29]Если интересно могу в общих чертах расказать как
Sectey (2004-08-03 17:51:00) [30]>dima
Я тут знакомому диплом на аналогичную тему клипал, я использовал динамическое построение HTML-ок и последующее их разбор.
dima (2004-08-03 17:14:00) [31]//Ответ на вопрос "как" - платный
Ну как всегда. Чуть что плати бабки
Думкин (2004-08-03 15:08:00) [32]> [21] KSergey © (03.08.04 15:00)
Мы игры типа телефиговин писали - там сложнее, если без выбора. Я только тестил - но былдо ужасно.
KSergey (2004-08-03 15:00:00) [33]> [20] Думкин © (03.08.04 14:52)
По-моему, в [17] dima (03.08.04 14:39) - хороший пример.
Если пользователь описался в букве - его проблемы (он ведь по языку экзамен сдает, важно не просто "разбираться в проблеме"). Считаем, что не угадал ;)
(Ну можно слегка усложнить, дупустив опечатку в одной букве. Можно еще усложнить, допустив пропуск одной буквы. Но это уже детали.)
Думкин (2004-08-03 14:52:00) [34]> [15] Sergey_Masloff (03.08.04 12:31)
А можно ссылки? Потому как сталкивался и согласен с ЮЗ - проблем тут немерянно и приемлимого решения не знаю.
KSergey (2004-08-03 14:50:00) [35]Тем более, что я уже писал: Memo+EM_POSFROMCHAR
KSergey (2004-08-03 14:49:00) [36]Можно
Ответ на вопрос "как" - платный
dima (2004-08-03 14:39:00) [37]черт с ней с красотой, если нельзя из rtf грузить пусть будет txt
тесты по английскому (никаких цифр и бумажек)
пример
1.1 Complete the sentences with one of the following verbs in correct form:
come get happen look make start stay try work
1. ‘You __________ hard today.’ ‘Yes, I have a lot to do.’
2. I ___________ for Christine. Do you know where she is?
3. It ________ dark. Shall I turn on the light?
4. They haven’t got anywhere to live at the moment. They ________ with friends until they find somewhere.
5. ‘Are you ready, Ann?’ ‘Yes, I_________.’
6. Have you got an umbrella? It _________ to rain.
7. You ___________ a lot of noise. Could you be quieter? I ____________ to concentrate.
8 . Why are all these people here? What ___________?
А можно сделать, чтобы прога читала нужную инфу из текста теста?
Например, файл теста определенной структуры, где первые 10 строк (например) содержат служебную инфу.
Пример
1-ая строчкачисло вопросов в тесте
прога берет эту цифру, ищет символ подчеркивания и на эти места ставит ссылочки, которые создаются в процессе выполнения (забыл, как это правильно называется)
2-6 строчкисюда вводятся ответы по порядку, например:
правильный ответ1 на 1 вопрос,правильный ответ2 на 1 вопрос,правильный ответ3 на 1 вопрос; правильный ответ1 на 2 вопрос...
эти 10 строчек как-то скрываются и не отображаются
а потом сравнивается то, что ввели в edit со строчками ответов
Нафантазировал, что писатели–фантасты позавидуют-))
KSergey (2004-08-03 12:33:00) [38]> [14] Юрий Зотов © (03.08.04 12:18)
Я не знаю, что имеет в виду автор, но не надо все усложнять
Вполне возможно, что в нужное место, например, надо будет просто вставить число (результат вычисления на бумажках) - вот и все.
> [8] dima (02.08.04 20:31)
> выбрать правильный может и идиот
Не факт. Угадать - да. Выбрать - не всегда.
Это все от профессионализма составителя зависит.
PS
Мне запомнились с института тесты по математике. Возможно, я был слабым учеником, но из 5 вариантов заведомо отбросить неверные (а так, как известно, отвечать на тесты проще) удавалось редко: ответы отличались не принципиально, лишь какой-либо мелочью. И чтобы выбрать правильный - надо было очень четко знать все, что надо было знать. Если плаваешь - то увы, только угадайка...
Sergey_Masloff (2004-08-03 12:31:00) [39]Юрий Зотов © (03.08.04 12:18) [14]
На то имеются методисты (составление вопросов на которые ответ проще формализовать). Нет, серьезно, делали и успешно подобные тесты. Да и зарубежные аналоги видел я на выставках.
Юрий Зотов (2004-08-03 12:18:00) [40]> А проверить введенное в едит на некий набор ключевых слов и их
> порядка не такая сложная задача.
Вопрос: Чем отличается певец от певицы?
Ответ 1: Певец - мужчина, певица - женщина.
Ответ 2: Певица - женщина, певец - мужчина.
Ответ 3: Певец - не женщина, певец - мужчина.
Ответ 4: Певица - не мужчина, певец - мужчина.
И подобных вариантов - море бескрайнее. Все правильные. Определить это по наличию ключевых слов (певец, певица, мужчина, женщина и т.п.) и порядку их следования для ВСЕХ возможных вариантов, IMHO, невозможно. Ошибки неизбежны.
Даже для такого простого вопроса.