Консультация № 182245
18.02.2011, 02:31
60.00 руб.
0 10 1
Здравствуйте! Прошу помощи в следующем вопросе:

Нужно реализовать тест А.Ассингера.

Вопросы хранить в текстовом файле.

Заранее благодарен.

Обсуждение

давно
Мастер-Эксперт
425
4118
18.02.2011, 07:40
общий
С помощью какой версии Delphi делать программу?
А лучше всего, если Вашу программу можно будет написать с помощью бесплатного Lazarus'а, дабы не нарушать законодательство (Lazarus - это бесплатный аналог Delphi 7).
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
давно
Профессор
230118
3054
18.02.2011, 09:39
общий
Форма или консоль? Если форма, выводить вопросы по очереди?
Неизвестный
18.02.2011, 10:22
общий
Адресаты:

Сделать нужно с помощью Delphi 7.

За основу можно взять пример отсюда http://www.3vium.ru/tests/Assinger.html

На форме стандартно показывается по одному вопросу, человек выбирает комбобокс и нажимает далее, чтобы перейти к следующему вопросу.
Все вопросы хранятся в тектовом файле, соответственно выводить на форму тоже из него по одному вопросу.
давно
Мастер-Эксперт
425
4118
18.02.2011, 10:59
общий
Если хранить вопросы в текстовом файле, то его лёгкая доступность делает возможность писать в нём всякие гадости. Один раз (было это давно, ещё во времена TurboPascal ), написал одному преподавателю тесты, так хитрые студенты в текстовом файле с вопросами понаписали всяческих матюгов, а потом ржачь по всему институту стоял.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
18.02.2011, 11:24
общий
Можно использовать не типизированный файл, тогда проблема решится.
Тест нужен не для института, поэтому изменять там никто ничего не будет.

Если кто-то знает способ без особого ущерба закинуть тест в саму программу, буду рад, но думаю это явно увеличит код программы.
давно
Мастер-Эксперт
319965
1463
18.02.2011, 15:15
общий
это ответ
Здравствуйте, Savter!
Посмотрите вариант во вложенном файле.
Прикрепленные файлы:
5
Спасибо Дмитрий, это именно то, что нужно.
Неизвестный
18.02.2011, 17:13
общий
Всем спасибо, вопрос закрыт.
давно
Мастер-Эксперт
425
4118
18.02.2011, 17:29
общий
Цитата: 292624
сли кто-то знает способ без особого ущерба закинуть тест в саму программу, буду рад, но думаю это явно увеличит код программы.

Не увеличит. Зато упростит, т.к. будет отсутсвовать код открытия-закрытия файла.
Есть такой класс - TStringList, набор (массив) строк. Поскольку тест у Вас фиксированный, то набор вопросов может хранится в самой программе в таком массиве. Тогда общий принцип предъявления вопросов из такого массива будет таким:
Код:
Var
Questions: TStringList;
i: Integer;
Begin
...
For i:=0 To Questions.Count-1 Do
Begin
//Вывод вопроса по текущему индексу i
Questions[i]
End;
End;

Ответы можно записывать в массив целых чисел размерностью такой же, как и массив вопросов, а потом этот массив просуммировать. Это на случай какой-нибудь дополнительной обработки. А так, можно просто суммировать результаты тут же, в цикле.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
давно
Мастер-Эксперт
425
4118
18.02.2011, 17:39
общий
Адресаты:
Код:
const
QwestFile = 'D:\Test\qwest.txt';

Вы зря задаёте жёсткую привязку к диску и каталогу. Во многих случаях это будет причиной неработоспособности Вашей программы. На будущее - это серьёзный минус.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
давно
Мастер-Эксперт
319965
1463
18.02.2011, 18:56
общий
Адресаты:
Никто привязку не задает. Это был рабочий пример, полезность которого находилась под вопросом.
Форма ответа