Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

тест на delphi


Страницы:   1 2 3

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, невозможно. Ошибки неизбежны.

Даже для такого простого вопроса.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо