Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2014, 11:29   #1
megaskull
 
Регистрация: 16.03.2013
Сообщений: 3
По умолчанию Тестирование на языке программирования Delphi.

Здравствуйте. Скачал проект теста в delphi и не могу разобраться с чужим кодом. Если Вам не сложно помогите пожалуйста понять как программа загружает вопросы и ответы, а так же понять как сделать эти самые вопросы и ответы рандомными. Заранее огромное спасибо.
Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm2 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    RadioGroup1: TRadioGroup;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure inic;
    procedure loadquestion;
    procedure showresults;
    procedure Button1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    ball, count: integer;
  end;

var
  Form2: TForm2;
  num, answ, strpos: integer;
  q: tstringlist;
  alplen: integer;

const
  alp = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя' +
    'АБВГДЕЁЖЗИЙКЛМНПОРСТУФХЦЧШЩЪЫЬЭЮЯ' + 'abcdefghijklmnopqrstuvwxyz' +
    'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + '0123456789' + '(){}-+=!?<>,.":;';
  key = 'super-key';

implementation

uses Unit1, Unit3;
{$R *.dfm}

procedure TForm2.FormCreate(Sender: TObject);
begin
  alplen := length(alp);
  q := tstringlist.Create;
  q.LoadFromFile(extractfilepath(paramstr(0)) + 'test1.txt');
  inic;
end;

procedure TForm2.FormDestroy(Sender: TObject);
begin
  q.destroy;
end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Form1.Close;
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
  if RadioGroup1.ItemIndex = -1 then
    exit;
  if RadioGroup1.ItemIndex + 1 = answ then
    inc(ball);
  inc(num);
  if num > count then
    showresults
  else
    loadquestion;
end;

procedure TForm2.showresults;
begin
  Form3.Visible := true;
  Form2.Visible := false;
end;

procedure TForm2.FormShow(Sender: TObject);
begin
  inic;
end;

procedure TForm2.loadquestion;
var
  i, k: integer;
begin
  Label1.Caption := 'Вопрос № ' + IntToStr(num) + ' из ' + q[0];
  RadioGroup1.Items.Clear;
  RadioGroup1.Caption := q[strpos];
  k := strtoint(q[strpos + 1]);
  answ := strtoint(q[strpos + 2]);
  for i := 1 to k do
    RadioGroup1.Items.Add(q[strpos + 2 + i]);
  inc(strpos, 3 + k);
end;

procedure TForm2.inic;
begin
  ball := 0;
  num := 1;
  strpos := 1;
  count := strtoint(q[0]);
  loadquestion;
end;

end.
Структура файла вопрос\ответ:
3 \\количество вопросов
Назовите столицу Монгольской империи при Чингизхане: \\вопрос
5 \\количество ответов
2 \\правильный ответ
Сарай
Каракорум
Отрар
Пекин
Сыгнак \\ответы

Последний раз редактировалось megaskull; 14.05.2014 в 11:31. Причина: Дополнение
megaskull вне форума Ответить с цитированием
Старый 14.05.2014, 16:09   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Код:
procedure TForm2.FormCreate(Sender: TObject);
begin
  alplen := length(alp);
  q := tstringlist.Create;
  q.LoadFromFile(extractfilepath(paramstr(0)) + 'test1.txt');  // Загрузка вопросов в q
  inic;
end;
Код:
Label1.Caption := 'Вопрос № ' + IntToStr(num) + ' из ' + q[0]; // q[0] - количество вопросов в тесте
Цитата:
RadioGroup1.Caption := q[strpos]; // strpos - указатель на вопрос
Вообще механика работы здесь описана:
Код:
RadioGroup1.Caption := q[strpos];
  k := strtoint(q[strpos + 1]);
  answ := strtoint(q[strpos + 2]);
  for i := 1 to k do
    RadioGroup1.Items.Add(q[strpos + 2 + i]);
  inc(strpos, 3 + k);
к - количество вариантов ответа
answ - правильный ответ
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 14.05.2014 в 16:13.
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами на языке программирования С bilochka Помощь студентам 0 09.03.2013 12:50
Работа с файлами на языке программирования С bilochka Помощь студентам 0 02.03.2013 16:18
Написать программу на языке программирования Delphi для вычисления значения функции Chemist_8 Помощь студентам 3 12.12.2012 17:24
На каком языке программирования вы программируете ? Programmer №1 Свободное общение 8 31.07.2012 15:47
Игра "Кости" на языке программирования Delphi Наталья111 Помощь студентам 20 01.11.2009 16:40