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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2009, 20:27   #1
OK_Kam
Новичок
Джуниор
 
Регистрация: 25.05.2009
Сообщений: 2
По умолчанию Как быть дальше?

Мне нужно сделать тест (да понимаю избитая тема), но среди того сто есть на этом форуме я не нашла. Короче, Есть txt файл, в котором 1-я строчка вопрос, 2 - 1-ый вариант ответа, 3- 0 или 1(флажок верного ответа), и т.д. Всего 10 вопросов. Что сделала: форма, на ней появляются вопросы, когда вопросы заканчиваются выходит ошибка. Что нужно: конечно же подсчет баллов. Есть соображения?
Вложения
Тип файла: rar тест_v1.rar (168.0 Кб, 7 просмотров)
OK_Kam вне форума Ответить с цитированием
Старый 25.05.2009, 21:29   #2
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Хех, смотрите как вы загружаете файл:
Код:
f.LoadFromFile('D:\для дипломников\Лысенко\Проект\Vopr.txt');
А если он не существует? У меня например нет на компьютере таких каталогов.
Потом не onActivate использовать надо, а onShow
Кароче, вот весь ваш код измененный до неузнаваемости:
Код:
unit Unit2;

interface

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

type
  TTestForm = class(TForm)
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  TestForm: TTestForm;
  nVopr:integer;
  nOtv1:integer;
  nOtv2:integer;
  nOtv3:integer;
  f:TStrings; //Переменная типа объект TStringList.
  balls: byte;//Общее кол-во набранных баллов
  bal: byte;  //Индекс правильного балла

implementation

{$R *.dfm}

procedure TTestForm.FormShow(Sender: TObject);
begin
 balls := 0;
 RadioButton1.Checked := true;
 RadioButton2.Checked := false;
 RadioButton3.Checked := false;

 if FileExists(ExtractFilePath(ParamStr(0)) + 'Vopr.txt') then
 begin
  nVopr:=0;
  nOtv1:=1;
  nOtv2:=3;
  nOtv3:=5;
  f:= TStringList.Create();
  try
   f.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Vopr.txt');
   Label4.Caption:=f.Strings[nVopr];
   Label1.Caption:=f.Strings[nOtv1];
   Label2.Caption:=f.Strings[nOtv2];
   Label3.Caption:=f.Strings[nOtv3];
   if f.Strings[nOtv1 + 1] = ',1' then
    bal := 1
   else if f.Strings[nOtv2 + 1] = ',1' then
    bal := 2
   else if f.Strings[nOtv3 + 1] = ',1' then
    bal := 3;
  finally
   f.Free;
  end;
 end
 else
  ShowMessage('Файл не найден');
end;

procedure TTestForm.Button1Click(Sender: TObject);
begin
 if Button1.Caption = 'На начало' then
 begin
  RadioButton1.Checked := true;
  RadioButton2.Checked := false;
  RadioButton3.Checked := false;

  balls := 0;
  Button1.Caption := 'Далее';
  nVopr:=0;
  nOtv1:=1;
  nOtv2:=3;
  nOtv3:=5;
  f:= TStringList.Create();

  try
   f.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Vopr.txt');
   Label4.Caption:=f.Strings[nVopr];
   Label1.Caption:=f.Strings[nOtv1];
   Label2.Caption:=f.Strings[nOtv2];
   Label3.Caption:=f.Strings[nOtv3];
  finally
   f.Free;
  end;
 end
 else
 begin
  if FileExists(ExtractFilePath(ParamStr(0)) + 'Vopr.txt') then
  begin
   if (FindComponent('RadioButton' + IntToStr(bal)) as TRadioButton).Checked then
    inc(balls);

   RadioButton1.Checked := true;
   RadioButton2.Checked := false;
   RadioButton3.Checked := false;

   nVopr:=nVopr+7;
   nOtv1:=nOtv1+7;
   nOtv2:=nOtv2+7;
   nOtv3:=nOtv3+7;
   f:= TStringList.Create();

   try
    f.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Vopr.txt');
    if nVopr < f.Count then
    begin
     Label4.Caption:=f.Strings[nVopr];
     Label1.Caption:=f.Strings[nOtv1];
     Label2.Caption:=f.Strings[nOtv2];
     Label3.Caption:=f.Strings[nOtv3];
     if f.Strings[nOtv1 + 1] = ',1' then
      bal := 1
     else if f.Strings[nOtv2 + 1] = ',1' then
      bal := 2
     else if f.Strings[nOtv3 + 1] = ',1' then
      bal := 3;
    end
    else
    begin
     ShowMessage('Вы набрали ' + IntToStr(balls) + ' баллов');
     Button1.Caption := 'На начало';
    end;
   finally
    f.Free;
   end;
  end;
 end;
end;

end.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 25.05.2009, 21:53   #3
OK_Kam
Новичок
Джуниор
 
Регистрация: 25.05.2009
Сообщений: 2
По умолчанию Снимаю шляпу!

Спасибо большое! Не думала, что так быстро кто-то ответит. А если у меня будет несколько txt-файлов с вопросами (другие темы). Как сделать, чтобы на стартовой форме был КомбоБокс для выбора темы теста?
OK_Kam вне форума Ответить с цитированием
Старый 25.05.2009, 22:06   #4
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Перетащите на первую форму Combobox и измените свойство Items так, чтобы элементы были равны именам текстовых файлов (только без расширения)
Пример:
Код:
Vopr
Vopr2
Значит в директории программы должны быть два текстовых файла
Vopr.txt
Vopr2.txt

Дальше создаете во второй форме в секции public переменную:
Код:
  public
    { Public declarations }
    VoprFileName: string;
  end;
Заменяете код при клике на кнопку Старт в первой форме:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
 TestForm.VoprFileName := ComboBox1.Text;
 TestForm.Show;
end;
И все строчки:
Код:
if FileExists(ExtractFilePath(ParamStr(0)) + 'Vopr.txt') then
//и
f.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Vopr.txt');
Заменяете на:
Код:
if FileExists(ExtractFilePath(ParamStr(0)) + VoprFileName + '.txt') then
//и
f.LoadFromFile(ExtractFilePath(ParamStr(0)) + VoprFileName + '.txt');
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Упал телефон в сельский туалет. Как быть, как мыть? Лукманов Александр Свободное общение 28 30.04.2009 10:42
Как быть?Мышление. Elm0 Свободное общение 22 30.04.2009 09:30
Подскажите как быть? Viaceslav1987 Общие вопросы C/C++ 2 24.03.2009 22:08
Как быть? Mitron Свободное общение 8 11.03.2008 20:01