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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2009, 23:49   #1
maslo
 
Регистрация: 16.06.2009
Сообщений: 7
По умолчанию Делфи. Тесты.

Народ такой вопрос, я сделал тест через файлы, (как делать тест через файлы нарыл на этом форуме) и мне нужно организовать подсчет набранных балов и вывести оценку, Еще мне нужно сделать что при входе в тест в edit можно было ввести ФИО и Группу, нажать кнопку далее, и данные введенные в edit сохранились в текстовом файле, вот таких 2 небольших вопроса, помогите плз решить эту проблемму
maslo вне форума Ответить с цитированием
Старый 17.06.2009, 00:40   #2
Vladya
Форумчанин
 
Аватар для Vladya
 
Регистрация: 04.11.2008
Сообщений: 360
По умолчанию

А Вы не думали сначала скрыть все элементы и оставить только эдиты для ввода, а потом после записи в файл скрывать эдит и показывать остальные, те которые нужны для работы теста. А еще лучше будет если с самого начала, у вас запустится вторая форма на которой будут эдиты, а после нажатия на кнопку, или еще что, запускалась основная программа. ФИО и группу можно сохранять в ini файл, или же просто txt
Мой скромненький сайт
Vladya вне форума Ответить с цитированием
Старый 17.06.2009, 19:51   #3
maslo
 
Регистрация: 16.06.2009
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Vladya Посмотреть сообщение
А Вы не думали сначала скрыть все элементы и оставить только эдиты для ввода, а потом после записи в файл скрывать эдит и показывать остальные, те которые нужны для работы теста. А еще лучше будет если с самого начала, у вас запустится вторая форма на которой будут эдиты, а после нажатия на кнопку, или еще что, запускалась основная программа. ФИО и группу можно сохранять в ini файл, или же просто txt
Мне подсчет балов в тесте важнее... я уже решил проблему с вводом данных для людей проходившим тест...вот с подсчетом балов незнаю как сделать... помогите плз, вот мой исходник теста через файлы

Код:
unit Unit11;

interface

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

type
  TForm11 = class(TForm)
    Panel1: TPanel;
    Button1: TButton;
    Button2: TButton;
    RadioGroup1: TRadioGroup;
    Label1: TLabel;
    Button3: TButton;
    procedure Button2Click(Sender: TObject);

    procedure FormCreate(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
   It :longint; // позиция в списке FAl
   FAl :TStrings; // весь файл
   Cut :TStrings; // вопрос
   Ans_ :Integer; // номер правильного ответа
   Procedure GetQu(LstIn :TStrings; LstOut :TStrings; var Nitm :LongInt); // блок вопрос-ответ
   Procedure ParsQu(Lstin :TStrings; RG :TRadioGroup; Qu :TLabel; var Ans :Integer);
    { Public declarations }
  end;
 Const Fnam = '_Тест_.txt'; // имя файла с вопросами
var
  Form11: TForm11;

implementation

{$R *.dfm}
 Procedure TForm11.GetQu(LstIn :TStrings; LstOut :TStrings; var NItm :LongInt);
var I :LongInt;
    S :String;
    St :Boolean; // начало - T
begin // блок вопрос-ответ
  LstOut.Clear;
  LstOut.BeginUpdate;
 For I:=NItm To LstIn.Count-1 Do
 begin
   S := LstIn.Strings[I];
  If Length(Trim(S))>0 then
  If Pos(':', Trim(S))=Length(Trim(S)) then
   St := True;
  If St then
   LstOut.Add(S);
  If Length(S)=0 then
  begin
   NItm := I+1;
   LstOut.Delete(LstOut.Count-1);
   break;
  end;
 end;
  LstOut.EndUpdate;
end;
 Procedure TForm11.ParsQu(Lstin :TStrings; RG :TRadioGroup; Qu :TLabel; var Ans :Integer);
var I,II,A :Longint;
    S :String;
begin
 If LstIn=Nil then Exit;
 RG.Items.Clear;
 Qu.Caption := '';
 Ans := -2;
 A := 0;
  II := LstIn.Count;
 For I:=0 to II-1 Do
 begin
   S := LstIn.Strings[I];
  If Pos(':', Trim(S))=Length(Trim(S)) then
   Qu.Caption := S; // вопрос
   // Ответы
  If Trim(S)[1] in ['~', '='] then
  begin
   If Trim(S)[1] = '=' then
   begin
    Ans := A;
    RG.Items.Add(Copy(S, 2, Length(S)-1));
   end
    else
   RG.Items.Add(Copy(S, 2, Length(S)-1));
    Inc(A);
  end;
 end;
end;
procedure TForm11.Button2Click(Sender: TObject);
begin

 FAl.Clear;
 FAl.LoadFromFile(FNam);
 It := 0;
 Cut.Clear;
 Button1.Enabled := True;
 Button2.Enabled := False;
end;



procedure TForm11.FormCreate(Sender: TObject);
begin
begin
 It := 0;
 FAl := TStringList.Create; // весь файл
 Cut := TStringList.Create;
end;



end;
procedure TForm11.Button3Click(Sender: TObject);
begin
If It>0 then
  If radiogroup1.ItemIndex = Ans_ then
   Showmessage('Правильно')
  else
   Showmessage('Не правильно');

 GetQu(FAl, Cut, It); // вырезаем вопрос-ответы
 ParsQu(Cut, radiogroup1, Label1, Ans_); // парсим вопрос-ответ

end;

end.

Последний раз редактировалось Stilet; 18.06.2009 в 11:44.
maslo вне форума Ответить с цитированием
Старый 18.06.2009, 00:51   #4
Vladya
Форумчанин
 
Аватар для Vladya
 
Регистрация: 04.11.2008
Сообщений: 360
По умолчанию

Попробуйте вот так:
Код:

Var p, n: integer; //правильные неправильные ответы

If radiogroup1.ItemIndex = Ans_ then
 Begin
  Showmessage('Правильно');
  p:=p+1;
  Label1.Capture:=IntToStr(p)+ ' - правильных ответов';
 End
else
 Begin
  Showmessage('Не правильно');
  n:=n+1;
  Label2.Capture:='Всего '+IntToStr(n)+' неправильных ответов'
  End;
или так нельзя?
Мой скромненький сайт
Vladya вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тесты в delphi Solana Общие вопросы Delphi 4 07.10.2010 21:35
Тесты в Делфи Sergey30q Помощь студентам 10 27.05.2009 01:41
тесты Majority Помощь студентам 1 11.11.2008 23:49
тесты по психологии. Olga5 БД в Delphi 6 02.06.2008 11:44