Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Синтаксис
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.05.2011, 12:20
gralex gralex вне форума
Прохожий
 
Регистрация: 15.04.2009
Сообщения: 14
Репутация: 10
Печаль Пишу достаточно примитивный тест. Не понимаю как отловить некоторые ошибки

Собственно, код: (во вложениях полностью программа)
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Memo1: TMemo;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Button1: TButton;
    Memo2: TMemo;
    Button2: TButton;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    RadioButton4: TRadioButton;
    RadioButton5: TRadioButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Randomm(NQuest:Integer;var a:array of Integer);

  private
    { Private declarations }
  public
    Radiobutton:TObject;
    S,NoPrav:Integer; { Public declarations }
  end;

var
  Form1: TForm1;
  T,S,i,j:Integer;
  C:String;      {Переменная для строчки из файла Questions.txt и ее обработки}
  NQuest, MQuest:Integer;   {Кол-во вопросов всего; кол-во требуемых для теста}
  N:array[1..500] of Integer;
  NoVariant,NoPrav:Integer;        {Кол-во вариантов ответа; номер правильного}
  {========================================}

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo2.Lines.LoadFromFile('text/questions.txt');
  T:=0;
  C:=memo2.lines[T];
  NQuest:=StrToInt(copy(C,2,Pos(',',C)-2));
  MQuest:=StrToInt(copy(C,Pos(',',C)+1,Pos(']',C)-Pos(',',C)-1));
  c:=copy(C,Pos(']',C)+1, length(C)-Pos(']',C));            {Тема теста}
  Form1.caption:='Тест по теме: ' + C; {+label для формы регистрации}
  Label1.Caption:='Тест по теме: ' + C;
{=====Рандомный выбор MQuest вопросов из количества NQuest=====================}
  Randomm(NQuest, N);

  Button2.Hide;
  Label5.Hide;
  Label6.Hide;
  Label7.Hide;
  RadioButton1.Hide;
  RadioButton2.Hide;
  RadioButton3.Hide;
  RadioButton4.Hide;
  RadioButton5.Hide;
end;



procedure TForm1.Button1Click(Sender: TObject);
begin
  if (Edit1.Text='')or (Edit1.Text=' ') then
  begin
     ShowMessage('Ошибка. '+#13#10+'Пожалуиста введите фамилию.');
     abort;
  end;
  if (Edit2.Text='')or (Edit2.Text=' ') then
  begin
     ShowMessage('Ошибка. '+#13#10+'Пожалуиста введите имя.');
     abort;
  end;
  if (Edit3.Text='')or (Edit3.Text=' ') then
  begin
     ShowMessage('Ошибка. '+#13#10+'Пожалуйста введите номер группы.');
     abort;
  end;
  Memo1.Lines.LoadFromFile('text/info.txt');
  Memo1.Lines.Add(Edit1.Text+' '+Edit2.Text+' '+Edit3.Text
    +' ('+TimeToStr(now)+','+DateToStr(now)+' )');
  Memo1.Lines.SaveToFile('text/info.txt');
  label1.Hide;
  label2.Hide;
  label3.Hide;
  label4.Hide;
  edit1.Hide;
  edit2.Hide;
  edit3.Hide;
  button1.Hide;
  button2.Show;
  label5.Show;
  label6.Show;
  label7.Show;
  RadioButton1.Show;
  RadioButton2.Show;
  RadioButton3.Show;
  RadioButton4.Show;
  RadioButton5.Show;



{=====Вопросы и варианты ответа================================================}
  For i:=1 to NQuest do
    begin
      RadioButton1.Checked:=False;
      RadioButton2.Checked:=False;
      RadioButton3.Checked:=False;
      RadioButton4.Checked:=False;
      RadioButton5.Checked:=False;
      t:=t+1;
      C:=Memo2.Lines[T]; {Чтение след строки -  строки вопроса}
      For j:=1 to MQuest do
      begin
        If i=N[j] then
        begin
          NoVariant:=StrToInt(Copy(C,2,pos(',',C)-2));                   {NoVariant - кол-во вариантов ответа}
          C:=Copy(C, Pos(',',C)+1,Length(C)-pos(',',C)-1);
          NoPrav:=StrToInt(Copy(C,pos(']',C)-1,Length(C)-pos(']',C)-1)); {NoPrav - номер правильного ответа}
          C:=Copy(C, pos(']',C)+1,Length(C)-pos(']',C)+1);
{Обработка вопроса и выведение его на форму}
          if Length(C)>60 then
          begin
            label5.Caption:=Copy(C,1,60);
            C:=Copy(C,61,length(C)-60);
            If Length(C)>60 then
            begin
              label6.Caption:=Copy(C,1,60);
              C:=Copy(C,61,length(C)-60);
              If Length(C)>60 then
                label7.Caption:=Copy(C,1,60)
              else
                label7.Caption:=C;
            end
            else
            begin
              label6.caption:=C;
              label7.hide;
            end;
          end
          else
          begin
            label5.caption:=C;
            label6.hide;
            label7.hide;
          end;
        end;
{=====Варианты выбора=================}
       radiobutton1.caption:=Memo2.Lines[t];
       radiobutton2.caption:=Memo2.Lines[t+1];
       t:=t+2;
       If NoVariant>2 then
          If NoVariant=3 then
          begin
               radiobutton3.caption:=Memo2.Lines[t];
               radiobutton4.Hide;
               radiobutton5.Hide;
               t:=t+1;
          end
          else
               If NoVariant=4 then
               begin
                    radiobutton3.caption:=Memo2.Lines[t];
                    radiobutton4.caption:=Memo2.Lines[t+1];
                    radiobutton5.Hide;
                    t:=t+2;
               end
               else
                    If NoVariant=5 then
                    begin
                         radiobutton3.caption:=Memo2.Lines[t];
                         radiobutton4.caption:=Memo2.Lines[t+1];
                         radiobutton5.caption:=Memo2.Lines[t+2];
                         t:=t+3;
                    end;
      end;
    end;       }
end;
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      case NoPrav of
      1:if radiobutton1.checked then
        S:=S+1;
      2:if radiobutton2.checked then
        S:=S+1;
      3:if radiobutton3.checked then
        S:=S+1;
      4:if radiobutton4.checked then
        S:=S+1;
      5:if radiobutton5.checked then
        S:=S+1;
      end;
    end;

{эта процедура нагло скопирована}
procedure Randomm(NQuest:Integer;var a:array of Integer);
  var
  m,x:Integer;
  f:Boolean;
  begin
    m:=2;
    Randomize;
    for i := 1 to NQuest do
    begin
    repeat
      f:=false;
      x:=Random(NQuest+1);
      for j:=1 to m do
      if N[j]=x then f:=true;
    until f=false;
    N[i]:=x;
    m:=m+1;
    end;
  end;
end.
Вложения
Тип файла: rar #6.rar (9.4 Кбайт, 17 просмотров)
Ответить с цитированием
  #2  
Старый 12.05.2011, 12:56
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Сообщения: 339
Версия Delphi: 10.4
Репутация: 429
По умолчанию Проблемка

Чего-то архив качаться не хочет...
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.
Ответить с цитированием
  #3  
Старый 12.05.2011, 13:09
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

закомментарь:
Код:
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
//    procedure Randomm(NQuest:Integer;var a:array of Integer);
Код:
procedure Randomm(NQuest:Integer;var a:array of Integer);
  var
  m,x:Integer;
  f:Boolean;
  begin
...
  end;
перенеси после:
Код:
implementation

{$R *.dfm}
тогда откомпилиться
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:49.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter