|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#15
|
||||
|
||||
Итак:
В архиве 2 файла: CryptoStream.pas и TestObjects.pas. CryptoStream.pas - пример простейшего файлового потока с шифрованием XOR. Работаем абсолютно так же как с обычным TFileStream. В TestObjects.pas - описаны классы для работы с тестом, а именно: Основной класс Тест TTest: Код:
TTest = class private ... public constructor Create; - создание объекта класса destructor Destroy; override; - удаление объекта класса procedure SaveToStream(Stream: TStream); - сохранение объекта в поток procedure LoadFromStream(Stream: TStream); - чтение объекта из потока function AddQuestion(aCaption: String): Integer; - добавить вопрос с текстовкой Caption. вернет порядковый номер созданного вопроса procedure DeleteQuestion(Index: Integer); - удалить вопрос с номером Index property Caption: String; - заголовок теста property EditPassword: String; - пароль для редактирования (использование произвольное :)) property Ball_Three: Word; - сколько нужно правильных ответов на 3 property Ball_Four: Word; - сколько нужно правильных ответов на 4 property Ball_Five: Word; - сколько нужно правильных ответов на 5 property QuestionsCount: Integer; - количество вопросов в тесте property Question[Index: Integer]: TQuestion; - тест с номером Index end; Код:
TQuestion = class private ... public constructor Create(aCaption: String); - это понятно destructor Destroy; override; - это тоже procedure Assign(const Value: TQuestion); procedure SaveToStream(Stream: TStream); - запись в поток procedure LoadFromStream(Stream: TStream); - чтение из потока function AddAnswer(aCaption: String; aIsTrue: Boolean = false): Integer; procedure DeleteAnswer(Index: Integer); - добавить ответ property Caption: String; - текстовка вопроса property AnswerCount: Integer; - количество ответов property Answer[Index: Integer]: TAnswer; - ответ с номером Index property QuestionType: TQuestionType; - тип вопроса property Bitmap: TBitmap; - картинка к вопросу end; Тип "тип вопроса" TQuestionType: Код:
TQuestionType = (qtRadio, qtCheck, qtEditAny, qtEditAll); - тип вопроса (выбор одного, выбор нескольких, ввод любого, ввод всех) Класс Ответ TAnswer: Код:
TAnswer = class private ... public constructor Create(aCaption: String; aIsTrue: Boolean); - тут все прозаино procedure Assign(const Value: TAnswer); procedure SaveToStream(Stream: TStream); - запись в поток procedure LoadFromStream(Stream: TStream); - чтение из потока property Caption: String; - текст ответа property IsTrue: Boolean; - ответ является верным end; Если не разберешься - выложу пример использования. Оба модуля проверены на WinXP, Delphi6. Грамотно поставленный вопрос содержит не менее 50% ответа. Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть. Последний раз редактировалось dr. F.I.N., 12.01.2012 в 17:09. |