Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.54/24: Рейтинг темы: голосов - 24, средняя оценка - 4.54
Ly4Dobra
0 / 0 / 0
Регистрация: 23.02.2013
Сообщений: 1
1

Создание теста

26.02.2013, 18:03. Просмотров 4303. Ответов 1
Метки нет (Все метки)

Добрый день,уважаемые форумчане.
Я занимаюсь японским языком,но толковой программы-теста для изучения так и не нашёл. Учебники не самый эффективный способ изучения. Тесты намного эффективнее. Поэтому пришла идея создания небольшого теста.

Конечно созданием теста я не ограничусь,но т.к. я новичок в программировании (в голове лишь небольшие знания по паскалю,оставшиеся ещё со школы), то я решил пока начать именно с теста. В общем не думаю,что кому-либо важна предыстория,так что приступим непосредственно к программированию.


У меня имеется следующая хрень:

Объявлены переменные
Delphi
1
2
3
4
5
var
  FormTestJap: TFormTestJap;
  Slova: TIniFile;
  IntNextTest: integer;
  OtvetStr: string;
Кнопка начать тест:
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TFormTestJap.ButtonStartClick(Sender: TObject);
begin
IntNextTest:=1;
if RadioButtonSlova.Checked = true then
  begin
    Slova:=TiniFile.Create(extractfilepath(paramstr(0))+'Slova.ini');
    LabelJap.Caption:=(Slova.ReadString('Slova'+IntToStr(IntNextTest), 'Slova', 'Конец теста'));
    LabelJap.Alignment:=taCenter;
    OtvetStr:=(Slova.ReadString('Slova'+IntToStr(IntNextTest), 'Otvet', 'Конец теста'));
   end;
end;
Кнопка следующий вопрос:
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TFormTestJap.ButtonNextClick(Sender: TObject);
begin
 
Inc(IntNextTest);
  Slova:=TiniFile.Create(extractfilepath(paramstr(0))+'Slova.ini');
  LabelJap.Caption:=(Slova.ReadString('Slova'+IntToStr(IntNextTest), 'Slova', 'Конец теста'));
  LabelJap.Alignment:=taCenter;
  OtvetStr:=(Slova.ReadString('Slova'+IntToStr(IntNextTest), 'Otvet', 'Конец теста'));
 
end;
Вопросы и ответы находятся в ini-файле. Всё читает, вопросов по этой теме нет. Разве что один,но думаю я и сам на него найду ответ. Но всё же. Сейчас вопросы идут все по списку. Как сделать так,что бы они выводились рандомно?

Ответы на вопросы тоже выдаёт (проверял легко,дописывал код ShowMessage (OtvetStr) и при нажатии на кнопку мне высвечивался верный ответ на каждый вопрос). Ту в общем всё в порядке.

А вот дальше косяк.
Мне нужно,что бы ответы не выбирались из предложенных (обычная форма теста - вопрос и несколько вариантов ответа),а нужно было написать самому.
В голову пришло только одно - вытащить на форму EditText и с помощью if - else сравнивать данный ответ и ответ в файле.
Было написано следующее:

Delphi
1
2
  If EditOtvet.Text = OtvetStr then EditOtvet.Color:=clLime
  else EditOtvet.Color:=clRed;
В принципе работает,но не так,как хочется.
Во-первых: показывает всегда не верный ответ,хотя он является верным. Если быть точнее,то он принимает правильный ответ следующего вопроса,а не того,который нужен.
Пятой точкой чую,что забыл какую-то маленькую подпись, сдвигающую правильные вопросы на 1 назад.
Во-вторых: никак не могу понять,как сделать так,что бы окрашенное поле возвращалось в обратное состояние (белый фон). Тут я даже не могу себе представить код.

Буду очень благодарен,если поможете.
Исходник могу закинуть,если нужно.
ПыСы: палками просьба не бить,я по существу программирую только первый день.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2013, 18:03
Ответы с готовыми решениями:

Создание теста
Привет всем. Нужно составить тест с вводом ответа, всего 10 вопросов(вопросы...

Создание теста
Здравствуйте всем!!! Помогите, пожалуйста, разобраться с созданием программы...

Создание теста
Почему то не считает баллы за выполнения заданий в конце теста: unit f_menu; ...

Создание теста
Как можно создать тест !!! Система состоит в основном из пяти компонентов:...

Создание теста с бд
мне нужно создать тест такого плана как на изображении, но как прикрепить это...

1
MaltseV
12 / 12 / 5
Регистрация: 06.01.2012
Сообщений: 51
26.02.2013, 18:31 2
Цитата Сообщение от Ly4Dobra Посмотреть сообщение
Как сделать так,что бы они выводились рандомно?
Задавайте рандомно IntNextText. Чтобы избежать повторений, можете использовать одномерный массив с номерами тестов, случайным образом выбирать индекс массива, вставлять тест, а затем удалять тот элемент массива.

Цитата Сообщение от Ly4Dobra Посмотреть сообщение
Во-первых: показывает всегда не верный ответ,хотя он является верным. Если быть точнее,то он принимает правильный ответ следующего вопроса,а не того,который нужен.
Попробуйте сравнить строки с помощью StrComp.


Цитата Сообщение от Ly4Dobra Посмотреть сообщение
Пятой точкой чую,что забыл какую-то маленькую подпись, сдвигающую правильные вопросы на 1 назад.
Попробуйте выполнить пошагово программу (кнопки F8 и F7) и проверить. Может пятая точка права.


Цитата Сообщение от Ly4Dobra Посмотреть сообщение
Во-вторых: никак не могу понять,как сделать так,что бы окрашенное поле возвращалось в обратное состояние (белый фон). Тут я даже не могу себе представить код.
Когда переходите на следующий тест, просто поменяйте цвет - EditOtvet.Color:=clWindow
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2013, 18:31

Создание теста в delphi7
Я создаю тест с помощью scrollbox в котором находятся radiogroup, а затем по...

Создание теста в Дельфи
Я хочу создать такой тест в делфи, определяющий стиль делового общения с...

Создание програмы-теста на DELPHI
Помогите создать тест на Делфи про Строковый тип данных Паскаля=))


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru