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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2014, 22:21   #1
SалександрS
Пользователь
 
Регистрация: 24.06.2014
Сообщений: 22
Восклицание не подскажите как подключить файл txt с вопросами к этому программному коду

Код:
unit Unit2;

interface

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

type
  TForm2 = class(TForm)
    AnswerGroup: TRadioGroup;
    Button1: TButton;
    TestBox: TComboBox;
    GroupBox1: TGroupBox;
    Question: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure LoadTest(Index: integer);
    procedure LoadQuestion(Index: integer);
    procedure Button1Click(Sender: TObject);
    procedure TestBoxCloseUp(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

const
  TestName='вопросы.txt'; // имя файла теста
  max=1000; // максимальное количесво вопросов
var
  Form2: TForm2;
  QuestionText: array [0..max] of string; // текст вопроса
  AnswerQuestion: array [0..max] of byte; // правильный вариант ответа
  QuestionText1: array [0..max] of string;// первый вопрос
  QuestionText2: array [0..max] of string;// второй вопрос
  QuestionText3: array [0..max] of string;// третий вопрос
  Ball: integer=0;                        // оценка
  now: integer=0;                         // текущий вопрос
implementation

uses Unit1;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
  if AnswerQuestion[now]=AnswerGroup.ItemIndex+1 then  // сравниваем значение ответа и выбранного значения
  inc(ball);
  AnswerGroup.ItemIndex:=-1;  // убираем выдаление с группы ответов
  inc(now);                   // увеличиваем вопрос на 1+
  LoadQuestion(now);          // загружаем его
end;

procedure TForm2.FormCreate(Sender: TObject);
var
  s: Tstrings;
  i: Integer;
begin
  i:=0;
  while FileExists(ExtractFilePath(application.ExeName)+TestName+inttostr(i)+'.txt') do  // проверяем файлы тестов
  begin
  application.ProcessMessages;  // что б не тормозило
  s:=tstringlist.Create;        // создаем переменную
  s.LoadFromFile(ExtractFilePath(application.ExeName)+TestName+inttostr(i)+'.txt'); // загружаем файл
    if s.Text<>'' then  // если не пуст то
    TestBox.Items.Add(s.Strings[0]); // добавляем в группу тестов название теста
  s.Free;  // уничтожаем переменную
  inc(i);  // увеличиваем счетчик
  end;
end;

procedure TForm2.LoadTest(Index: integer);   // загружаем выбранный тест
var
  s: Tstrings;
  j, h: Integer;
begin
  h:=0;
  s:=tstringlist.Create;  // создаем переменную
  s.LoadFromFile(ExtractFilePath(application.ExeName)+TestName+inttostr(Index)+'.txt'); // загружаем
    if s.Text<>'' then  // если не пустая то
    begin
    form1.Caption:=s.Strings[0]; // название теста
      for j := 1 to s.Count - 1 do // начинаем присваивать значения
      begin
        if s.Strings[j]='__________' then  // это разделитель который мы ищем
        begin
        QuestionText[h]:=s.Strings[j+1]; // текст вопроса
        QuestionText1[h]:=s.Strings[j+2];// текст первого вариант ответа
        QuestionText2[h]:=s.Strings[j+3];// текст второго варианта ответа
        QuestionText3[h]:=s.Strings[j+4];// текст третьего варианта ответа
        AnswerQuestion[h]:=strtoint(s.Strings[j+5]); // номер ответа
        inc(h); // увеличиваем счетчик для того что бы записывать в новый элемент массива
        end;
      end;
    end;
  s.Free; // уничтожаем переменную
  LoadQuestion(now);// загружаем вопрос здесь он всегда = 0
end;

procedure TForm2.TestBoxCloseUp(Sender: TObject);
begin
  // при выборе теста обнуляем все значения
  ball:=0;
  now:=0;
  button1.Enabled:=true;
  LoadTest(TestBox.ItemIndex);// загружаем выбранный тест
end;

procedure TForm2.LoadQuestion(Index: integer);
begin
  if QuestionText[Index]<>'' then// если выбранный вопрос существует то грузим его
  begin
  AnswerGroup.Items.Clear;// очищаем поле ответов
  Question.Caption:=QuestionText[Index];// задаем запрос
  AnswerGroup.Items.Add(QuestionText1[index]);// добавляем ответы
  AnswerGroup.Items.Add(QuestionText2[index]);
  AnswerGroup.Items.Add(QuestionText3[index]);
  end
  else // иначе сообщаем что тест завершен
  begin
  showmessage('Тест завершен'+#13+'Правильных ответов: '+inttostr(ball)); // сообщение что типа тест окончен и выдаем количесво правильных ответов
  button1.Enabled:=false; // делаем неактивной кнопку что бы не тыкали
  end;
end;

end.

Последний раз редактировалось Stilet; 01.11.2014 в 22:31.
SалександрS вне форума Ответить с цитированием
Старый 01.11.2014, 22:34   #2
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

Там же написано:
TestName='вопросы.txt'; - это название файла
FileExists(ExtractFilePath(applicat ion.ExeName)+TestName+inttostr(i)+' .txt') ищем в цикле файлы вопросов по типу: вопрос.txt1.txt, вопрос.txt2.txt и тд

То есть, надо создать в папке с программой, столько файлов сколько вопросов и на каждый новый файл добавлять цифру по номеру вопроса.
uberchel вне форума Ответить с цитированием
Старый 01.11.2014, 22:38   #3
SалександрS
Пользователь
 
Регистрация: 24.06.2014
Сообщений: 22
По умолчанию

Цитата:
Сообщение от uberchel Посмотреть сообщение
Там же написано:
TestName='вопросы.txt'; - это название файла
FileExists(ExtractFilePath(applicat ion.ExeName)+TestName+inttostr(i)+' .txt') ищем в цикле файлы вопросов по типу: вопрос.txt1.txt, вопрос.txt2.txt и тд

То есть, надо создать в папке с программой, столько файлов сколько вопросов и на каждый новый файл добавлять цифру по номеру вопроса.
файйл "вопросы.txt" я создавал сам, первоначально стоял другой файл txt, и все вопросы были в 1 файле (можете подробно объяснить вашу точку зрения) или
т.е. создать файлы с 1 вопросом, и поочередно записать их названия в эту строку TestName='вопросы.txt'?

Последний раз редактировалось SалександрS; 01.11.2014 в 22:42.
SалександрS вне форума Ответить с цитированием
Старый 01.11.2014, 22:50   #4
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

Вы дали код как я понял программы тестов, дак вот смотря на этот код, я сделал вывод, что программа работает, по такому принципу - допустим 3 вопроса:
Создаем в папке с программой 3 файла
вопросы.тхт1.тхт
вопросы.тхт2.тхт
вопросы.тхт3.тхт

в этих файлах текст:
Название вопроса
__________
Сам вопрос
вариант ответа 1
вариант ответа 2
вариант ответа 3
Номер ответа
uberchel вне форума Ответить с цитированием
Старый 01.11.2014, 22:56   #5
SалександрS
Пользователь
 
Регистрация: 24.06.2014
Сообщений: 22
По умолчанию

а названия файлов с вопросами в какую строку записывать?
SалександрS вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста, составить блок-схему по программному коду в Visual Basic незнайка22 Помощь студентам 0 29.06.2014 18:23
Не могу сделать к этому коду блок-схему алгоритма Templar() JavaScript, Ajax 0 18.01.2014 23:09
Нужно нарисовать блок схему по программному коду. labrador Помощь студентам 1 16.03.2012 17:10
(Паскаль)Написание комментариев к программному коду sonecka Помощь студентам 3 29.12.2011 19:04
Подключить сss файл к PHP коду. Ozerich PHP 2 31.05.2009 12:27