Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Тестирующая оболочка  (Прочитано 20142 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Димакрат
Гость
« : 29-10-2009 18:22 » 

В институте в качестве практики предложили сделать тестирующую оболочку, в качестве предмета предложили физику. Забил я все в картинки. Дело теперь за оболочкой. Начал с самого простого и постепенно усложняю структуру. Далеко не ушел. Код следующий...
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Family: TEdit;
    Name: TEdit;
    Group: TEdit;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    SpeedButton4: TSpeedButton;
    Variant: TEdit;
    otvet: TButton;
    Image1: TImage;
    Label4: TLabel;
    procedure SpeedButton3Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton4Click(Sender: TObject);
    procedure otvetClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
 Close();
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
 Family.Text := '';
 Name.Text := '';
 Group.Text := '';
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
 if (Family.Text = '') or
    (Name.Text = '') or
    (Group.Text = '')
 Then ShowMessage('Заполните все поля!')
 Else
  begin
   Family.Visible := False;
   Name.Visible := False;
   Group.Visible := False;
   SpeedButton1.Visible := False;
   SpeedButton2.Visible := False;
   SpeedButton3.Visible := False;
   Label1.Visible := False;
   Label2.Visible := False;
   Label3.Visible := False;
   Label4.Visible := True;
   Otvet.Visible := True;
   Form1.Caption := 'Тестирование';
  end;
end;

procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
 Close();
end;

procedure TForm1.otvetClick(Sender: TObject);
var
 a: Array[1..25] of Integer;
 i: Integer;
begin
 Label4.Visible := False;
 Otvet.Left := 192;
 Otvet.Top := 416;
 Variant.Visible := True;
 SpeedButton4.Visible := True;
 Randomize;
 For i:= 1 to 25 do a[i]:=1+random[99]; // вот здесь ругается и пишет ошибку Array type required
 Close();
end;

end.


Понять никак не могу, что там может не нравиться.
Суть программки, что заполняется массив из 25 элементов числами от 1 до 99, а после что-то вроде в зависимости от значения элемента открывалась бы соответствующая картинка, считывал ответ тестируемого записанный в TEdit, сравнил с правильным и так дальше по элементам. Как реализовать, не знаю, хотелось бы узнать элементы, с помощью которых это можно сделать, а не готовые решения.
« Последнее редактирование: 29-10-2009 19:25 от Sel » Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 29-10-2009 19:57 » 

Димакрат, ты обращаешься к random как к массиву. А это массив ли?

Кстати, в чем смысл заполнить локальный массив и сразу закрыть форму? Может стоит сперва описать логику, а потом уже кодировать?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Димакрат
Гость
« Ответ #2 : 01-11-2009 09:53 » 

RXL, то есть, мне нужно описать еще один массив с 99 элементами от 0 до 98?

Я ж говорю: делаю все по мере поступления задачи. Логика следующая:
формируется массив из 25 элементов с числами в интервале от 1 до 99.
К каждому числу у меня есть картинка с вопросом. После заполнения массива каждому элементу открывается соответствующая картинка.
К примеру, если первый элемент a[1]=22 то значение TImage.Picture.LoadFromFile:= '/путь ка картинке 22', и так пока массив из 25 элементов не закончится.
« Последнее редактирование: 01-11-2009 16:06 от Sel » Записан
Basurman
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 01-11-2009 15:10 » 

Цитата
For i:= 1 to 25 do a:=1+random[99]; // вот здесь ругается и пишет ошибку Array type required
random - стандартная функция языка, требующая ПАРАМЕТР. ПАРАМЕТР задаётся в круглых скобках.
Надо начинать изучать язык.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 02-11-2009 04:35 » 

RXL, то есть, мне нужно описать еще один массив с 99 элементами от 0 до 98?

Нет. Надо не гадать, а думать.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #5 : 03-11-2009 11:42 » 

Димакрат, мне кажется, вы не правильно понимаете задачу. вы делаете не оболочку, а программу. изменить число вопросов у вас нельзя, варианты ответов - нельзя, сами вопросы - нельзя. где хранится правильный ответ для тога - не понятно. как сохраняются варианты ответов - тоже непонятно. т.е., это - не оболочка. это автономный и практически не изменяемый продукт, понятие же оболочки подразумевает унифицированную работу с некими меняющимися структурами данных.

поэтому я бы советовал забить болт на всё, что вы написали, и задумался о том, чтобы храниться на диске в файле (файлах) список вопросов с вариантами ответов и указанием правильного ответа для каждого вопроса в виде обычного текстового файла (возможно - ini, хотя я бы выбрал xml). а задачей самой программы будет вычитать этот список, поочерёдно вывести на экран все вопросы и все варианты ответов к каждому, просуммировать правильные ответы, выдать на экран результат, и записать его в файл. к вопросу может прилагаться и картинка - ничто не мешает, просто одной опциональной строкой в инишнике будет больше.

это будет именно оболочкой, т.к. она сможет тестировать всё, что угодно. для тестирование не по физике, а по анонимному ботановедению, достаточно будет набрать другой файл с вопросами и ответами и подсунуть программе.

з.ы. имхо.
Записан

Димакрат
Гость
« Ответ #6 : 03-11-2009 21:55 » 

Было и есть такое в планах сделать что действительно стоящее. Так как сроки не растягивают решил сделать только самое основное, мне попались вопросы по первому семестру. Код я немножко доделал, что то изменил, это конечно не глобальные изменения, но все таки. При компилировании доходит до определенного места и дальше только если нажимать кнопку выход. Ниже код
Код:
procedure TForm1.OkClick(Sender: TObject);
 var
 a: Array[1..25] of Integer;
 i,o: Integer;
begin
 Randomize;
 For i:= 1 to 25 do a[i]:=1+random(99);
 o:=0;
 case a[i] {здесь останавливается курсор} of
  1: begin
      Edit1.Text :='img\1.jpg';
      Image1.Picture.LoadFromFile(pchar(Edit1.Text));
      If (Variant.Text = 'а') or
         (Variant.Text = 'А')
      Then o:=o+1;
      Variant.Text :='';
     end;
  2: begin
      Edit1.Text :='img\2.jpg';
      Image1.Picture.LoadFromFile(pchar(Edit1.Text));
      If (Variant.Text = 'г') or
         (Variant.Text = 'Г')
      Then o:=o+1;
      Variant.Text :='';
     end;
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 04-11-2009 08:34 » 

ты привязываешься  к конкретной задаче
Отойди в сторону и посмотри
Твоя задача - тестирующая оболочка
Что тестировать? Знания.
Создаешь базу знаний
База знаний  состоит из вопросов и ответов
Например, в xml
<ask title="Кто в доме хАзяин">
  <responce  title="Он"> <yes>1</yes><responce>
  <responce  title="Она"> <yes>0</yes><responce>
  <responce  title="Они"> <yes>0</yes><responce>
</ask>

Т.е. твоя задача:
обработка базы знаний
и
визуальное отображение
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 04-11-2009 15:39 » 

Цитата
Код:
case a[i] {здесь останавливается курсор} of

Требует регулярного выражения?
тогда;
Код:
...
Var
   i, o, x : integer;
...
   x := a[i];
   CASE x OF
     1: ...
     2: ...
   END;
« Последнее редактирование: 04-11-2009 15:40 от Oldy » Записан

С уважением, Oldy.
Димакрат
Гость
« Ответ #9 : 05-11-2009 20:54 » 

Спасибо с case разобрался. Теперь в другом сложности. В общем кнопка никак не хочет работать так как нужно. Массив из 25 элементов и 99 картинок, которые выбираются функцией Random() она мне выводит, но выводит не 25 эелемнтов, а выводит до тех пор пока не нажмешь крестик справа вверху. Пытаюсь понять ошибку, но не получается. Вот код

Код:
procedure TForm1.OkClick(Sender: TObject);
 var
 a: Array[1..25] of Integer;
 i,o: Integer;
begin
 o:=0;
 Randomize;
 For i:= 1 to 25 do
 begin
  a[i]:=1+random(99);
  case a[i] of
   1: begin
      Edit1.Text :='img\1.jpg';
      Image1.Picture.LoadFromFile(pchar(Edit1.Text));
      If (Variant.Text = 'а') or
         (Variant.Text = 'А')
      Then o:=o+1;
      Variant.Text :='';
     end;
  2: begin
      Edit1.Text :='img\2.jpg';
      Image1.Picture.LoadFromFile(pchar(Edit1.Text));
      If (Variant.Text = 'г') or
         (Variant.Text = 'Г')
      Then o:=o+1;
      Variant.Text :='';
     end;
  3: begin
      Edit1.Text :='img\3.jpg';
      Image1.Picture.LoadFromFile(pchar(Edit1.Text));
      If (Variant.Text = 'г') or
         (Variant.Text = 'Г')
      Then o:=o+1;
      Variant.Text :='';
     end;
  4: begin
      Edit1.Text :='img\4.jpg';
      Image1.Picture.LoadFromFile(pchar(Edit1.Text));
      If (Variant.Text = 'а') or
         (Variant.Text = 'А')
      Then o:=o+1;
      Variant.Text :='';
     end;
  5: begin
      Edit1.Text :='img\5.jpg';
      Image1.Picture.LoadFromFile(pchar(Edit1.Text));
      If (Variant.Text = 'б') or
         (Variant.Text = 'Б')
      Then o:=o+1;
      Variant.Text :='';
     end;
  6: begin
      Edit1.Text :='img\6.jpg';
      Image1.Picture.LoadFromFile(pchar(Edit1.Text));
      If (Variant.Text = 'б') or
         (Variant.Text = 'Б')
      Then o:=o+1;
      Variant.Text :='';
     end;
  7: begin
      Edit1.Text :='img\7.jpg';
      Image1.Picture.LoadFromFile(pchar(Edit1.Text));
      If (Variant.Text = 'д') or
         (Variant.Text = 'Д')
      Then o:=o+1;
      Variant.Text :='';
     end;
  8: begin
      Edit1.Text :='img\8.jpg';
      Image1.Picture.LoadFromFile(pchar(Edit1.Text));
      If (Variant.Text = 'д') or
         (Variant.Text = 'Д')
      Then o:=o+1;
      Variant.Text :='';
     end;
  9: begin
      Edit1.Text :='img\9.jpg';
      Image1.Picture.LoadFromFile(pchar(Edit1.Text));
      If (Variant.Text = 'Г') or
         (Variant.Text = 'г')
      Then o:=o+1;
      Variant.Text :='';
     end;
  10: begin
       Edit1.Text :='img\10.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'г') or
         (Variant.Text = 'Г')
       Then o:=o+1;
       Variant.Text :='';
      end;
  11: begin
       Edit1.Text :='img\11.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'в') or
          (Variant.Text = 'В')
       Then o:=o+1;
       Variant.Text :='';
      end;
  12: begin
       Edit1.Text :='img\12.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'б') or
          (Variant.Text = 'Б')
       Then o:=o+1;
       Variant.Text :='';
      end;
  13: begin
       Edit1.Text :='img\13.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'б') or
          (Variant.Text = 'Б')
       Then o:=o+1;
       Variant.Text :='';
      end;
  14: begin
       Edit1.Text :='img\14.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'б') or
          (Variant.Text = 'Б')
       Then o:=o+1;
       Variant.Text :='';
      end;
  15: begin
       Edit1.Text :='img\15.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'в') or
          (Variant.Text = 'В')
       Then o:=o+1;
       Variant.Text :='';
      end;
  16: begin
       Edit1.Text :='img\16.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'г') or
          (Variant.Text = 'Г')
       Then o:=o+1;
       Variant.Text :='';
      end;
  17: begin
       Edit1.Text :='img\17.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'б') or
          (Variant.Text = 'Б')
       Then o:=o+1;
       Variant.Text :='';
      end;
  18: begin
       Edit1.Text :='img\18.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'аб') or
          (Variant.Text = 'бв') or
          (Variant.Text = 'АБ') or
          (Variant.Text = 'БА') or
          (Variant.Text = 'Ба') or
          (Variant.Text = 'аБ') or
          (Variant.Text = 'бА') or
          (Variant.Text = 'Аб')
       Then o:=o+1;
       Variant.Text :='';
      end;
  19: begin
       Edit1.Text :='img\19.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'бв') or
          (Variant.Text = 'вб') or
          (Variant.Text = 'БВ') or
          (Variant.Text = 'ВБ') or
          (Variant.Text = 'бВ') or
          (Variant.Text = 'Вб') or
          (Variant.Text = 'Бв') or
          (Variant.Text = 'вБ')
       Then o:=o+1;
       Variant.Text :='';
      end;
  20: begin
       Edit1.Text :='img\20.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'б') or
          (Variant.Text = 'Б')
       Then o:=o+1;
      end;
  21: begin
       Edit1.Text :='img\21.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'вг') or
          (Variant.Text = 'гв') or
          (Variant.Text = 'ВГ') or
          (Variant.Text = 'ГВ') or
          (Variant.Text = 'Вг') or
          (Variant.Text = 'гВ') or
          (Variant.Text = 'вГ') or
          (Variant.Text = 'Гв')
       Then o:=o+1;
       Variant.Text :='';
      end;
  22: begin
       Edit1.Text :='img\22.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'б') or
          (Variant.Text = 'Б')
       Then o:=o+1;
      end;
  23: begin
       Edit1.Text :='img\23.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'д') or
          (Variant.Text = 'Д')
       Then o:=o+1;
      end;
  24: begin
       Edit1.Text :='img\24.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'в') or
          (Variant.Text = 'В')
       Then o:=o+1;
      end;
  25: begin
       Edit1.Text :='img\25.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'аб') or
          (Variant.Text = 'бв') or
          (Variant.Text = 'АБ') or
          (Variant.Text = 'БА') or
          (Variant.Text = 'Ба') or
          (Variant.Text = 'аБ') or
          (Variant.Text = 'бА') or
          (Variant.Text = 'Аб')
       Then o:=o+1;
       Variant.Text :='';
      end;
  26: begin
       Edit1.Text :='img\26.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'д') or
          (Variant.Text = 'Д')
       Then o:=o+1;
       Variant.Text :='';
      end;
  27: begin
       Edit1.Text :='img\27.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'б') or
          (Variant.Text = 'Б')
       Then o:=o+1;
       Variant.Text :='';
      end;
  28: begin
       Edit1.Text :='img\28.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'в') or
          (Variant.Text = 'В')
       Then o:=o+1;
       Variant.Text :='';
      end;
  29: begin
       Edit1.Text :='img\29.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'б') or
          (Variant.Text = 'Б')
       Then o:=o+1;
       Variant.Text :='';
      end;
  30: begin
       Edit1.Text :='img\30.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'г') or
          (Variant.Text = 'Г')
       Then o:=o+1;
       Variant.Text :='';
      end;
  31: begin
       Edit1.Text :='img\31.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'а') or
          (Variant.Text = 'А')
       Then o:=o+1;
       Variant.Text :='';
      end;
  32: begin
       Edit1.Text :='img\32.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'г') or
          (Variant.Text = 'Г')
       Then o:=o+1;
       Variant.Text :='';
      end;
  33: begin
       Edit1.Text :='img\33.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'г') or
          (Variant.Text = 'Г')
       Then o:=o+1;
       Variant.Text :='';
      end;
  34: begin
       Edit1.Text :='img\34.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'в') or
          (Variant.Text = 'В')
       Then o:=o+1;
       Variant.Text :='';
      end;
  35: begin
       Edit1.Text :='img\35.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'а') or
          (Variant.Text = 'А')
       Then o:=o+1;
       Variant.Text :='';
      end;
  36: begin
       Edit1.Text :='img\36.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'б') or
          (Variant.Text = 'Б')
       Then o:=o+1;
       Variant.Text :='';
      end;
  37: begin
       Edit1.Text :='img\37.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'а') or
          (Variant.Text = 'А')
       Then o:=o+1;
       Variant.Text :='';
      end;
  38: begin
       Edit1.Text :='img\38.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'г') or
          (Variant.Text = 'Г')
       Then o:=o+1;
       Variant.Text :='';
      end;
  39: begin
       Edit1.Text :='img\39.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'а') or
          (Variant.Text = 'А')
       Then o:=o+1;
       Variant.Text :='';
      end;
  40: begin
       Edit1.Text :='img\40.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'в') or
          (Variant.Text = 'В')
       Then o:=o+1;
       Variant.Text :='';
       end;
  41: begin
       Edit1.Text :='img\41.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'а') or
          (Variant.Text = 'А')
       Then o:=o+1;
       Variant.Text :='';
       end;
  42: begin
       Edit1.Text :='img\42.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'г') or
          (Variant.Text = 'Г')
       Then o:=o+1;
       Variant.Text :='';
       end;
  43: begin
       Edit1.Text :='img\43.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'д') or
          (Variant.Text = 'Д')
       Then o:=o+1;
       Variant.Text :='';
       end;
  44: begin
       Edit1.Text :='img\44.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'в') or
          (Variant.Text = 'В')
       Then o:=o+1;
       Variant.Text :='';
       end;
  45: begin
       Edit1.Text :='img\45.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'б') or
          (Variant.Text = 'Б')
       Then o:=o+1;
       Variant.Text :='';
       end;
  46: begin
       Edit1.Text :='img\46.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'б') or
          (Variant.Text = 'Б')
       Then o:=o+1;
       Variant.Text :='';
       end;
  47: begin
       Edit1.Text :='img\47.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'гд') or
          (Variant.Text = 'дг') or
          (Variant.Text = 'ДГ') or
          (Variant.Text = 'ГД') or
          (Variant.Text = 'гД') or
          (Variant.Text = 'Дг') or
          (Variant.Text = 'Гд') or
          (Variant.Text = 'дГ')
       Then o:=o+1;
       Variant.Text :='';
       end;
  48: begin
       Edit1.Text :='img\48.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'в') or
          (Variant.Text = 'В')
       Then o:=o+1;
       Variant.Text :='';
       end;
  49: begin
       Edit1.Text :='img\49.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'аб') or
          (Variant.Text = 'ба') or
          (Variant.Text = 'АБ') or
          (Variant.Text = 'БА') or
          (Variant.Text = 'аБ') or
          (Variant.Text = 'Ба') or
          (Variant.Text = 'Аб') or
          (Variant.Text = 'бА')
       Then o:=o+1;
       Variant.Text :='';
       end;
  50: begin
       Edit1.Text :='img\50.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'а') or
          (Variant.Text = 'А')
       Then o:=o+1;
       Variant.Text :='';
       end;
  51: begin
       Edit1.Text :='img\51.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'в') or
          (Variant.Text = 'В')
       Then o:=o+1;
       Variant.Text :='';
      end;
  52: begin
       Edit1.Text :='img\52.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'б') or
          (Variant.Text = 'Б')
       Then o:=o+1;
       Variant.Text :='';
      end;
  53: begin
       Edit1.Text :='img\53.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'а') or
          (Variant.Text = 'А')
       Then o:=o+1;
       Variant.Text :='';
      end;
  54: begin
       Edit1.Text :='img\54.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'в') or
          (Variant.Text = 'В')
       Then o:=o+1;
       Variant.Text :='';
      end;
  55: begin
       Edit1.Text :='img\55.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'а') or
          (Variant.Text = 'А')
       Then o:=o+1;
       Variant.Text :='';
      end;
  56: begin
       Edit1.Text :='img\56.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'а') or
          (Variant.Text = 'А')
       Then o:=o+1;
       Variant.Text :='';
      end;
  57: begin
       Edit1.Text :='img\57.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'б') or
          (Variant.Text = 'Б')
       Then o:=o+1;
       Variant.Text :='';
      end;
  58: begin
       Edit1.Text :='img\58.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'а') or
          (Variant.Text = 'А')
       Then o:=o+1;
       Variant.Text :='';
      end;
  59: begin
       Edit1.Text :='img\59.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'д') or
          (Variant.Text = 'Д')
       Then o:=o+1;
       Variant.Text :='';
      end;
  60: begin
       Edit1.Text :='img\60.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'б') or
          (Variant.Text = 'Б')
       Then o:=o+1;
       Variant.Text :='';
      end;
  61: begin
       Edit1.Text :='img\61.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'а') or
          (Variant.Text = 'А')
       Then o:=o+1;
       Variant.Text :='';
      end;
  62: begin
       Edit1.Text :='img\62.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'г') or
          (Variant.Text = 'Г')
       Then o:=o+1;
       Variant.Text :='';
      end;
  63: begin
       Edit1.Text :='img\63.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'вг') or
          (Variant.Text = 'ВГ') or
          (Variant.Text = 'гв') or
          (Variant.Text = 'ГВ') or
          (Variant.Text = 'Вг') or
          (Variant.Text = 'гВ') or
          (Variant.Text = 'вГ') or
          (Variant.Text = 'гВ')
       Then o:=o+1;
       Variant.Text :='';
      end;
  64: begin
       Edit1.Text :='img\64.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'в') or
          (Variant.Text = 'В')
       Then o:=o+1;
       Variant.Text :='';
      end;
  65: begin
       Edit1.Text :='img\65.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'д') or
          (Variant.Text = 'Д')
       Then o:=o+1;
       Variant.Text :='';
      end;
  66: begin
       Edit1.Text :='img\66.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'в') or
          (Variant.Text = 'В')
       Then o:=o+1;
       Variant.Text :='';
      end;
  67: begin
       Edit1.Text :='img\67.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'гд') or
          (Variant.Text = 'дг') or
          (Variant.Text = 'ДГ') or
          (Variant.Text = 'ГД') or
          (Variant.Text = 'гД') or
          (Variant.Text = 'Дг') or
          (Variant.Text = 'Гд') or
          (Variant.Text = 'дГ')
       Then o:=o+1;
       Variant.Text :='';
      end;
  68: begin
       Edit1.Text :='img\68.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'д') or
          (Variant.Text = 'Д')
       Then o:=o+1;
       Variant.Text :='';
      end;
  69: begin
       Edit1.Text :='img\69.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'г') or
          (Variant.Text = 'Г')
       Then o:=o+1;
       Variant.Text :='';
      end;
  70: begin
       Edit1.Text :='img\70.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'б') or
          (Variant.Text = 'Б')
       Then o:=o+1;
       Variant.Text :='';
      end;
  71: begin
       Edit1.Text :='img\71.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'а') or
          (Variant.Text = 'А')
       Then o:=o+1;
       Variant.Text :='';
      end;
  72: begin
       Edit1.Text :='img\72.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'а') or
          (Variant.Text = 'А')
       Then o:=o+1;
       Variant.Text :='';
      end;
  73: begin
       Edit1.Text :='img\73.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'г') or
          (Variant.Text = 'Г')
       Then o:=o+1;
       Variant.Text :='';
      end;
  74: begin
       Edit1.Text :='img\74.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'а') or
          (Variant.Text = 'А')
       Then o:=o+1;
       Variant.Text :='';
      end;
  75: begin
       Edit1.Text :='img\75.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'г') or
          (Variant.Text = 'Г')
       Then o:=o+1;
       Variant.Text :='';
      end;
  76: begin
       Edit1.Text :='img\76.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'а') or
          (Variant.Text = 'А')
       Then o:=o+1;
       Variant.Text :='';
      end;
  77: begin
       Edit1.Text :='img\77.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'в') or
          (Variant.Text = 'В')
       Then o:=o+1;
       Variant.Text :='';
      end;
  78: begin
       Edit1.Text :='img\78.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'а') or
          (Variant.Text = 'А')
       Then o:=o+1;
       Variant.Text :='';
      end;
  79: begin
       Edit1.Text :='img\79.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'в') or
          (Variant.Text = 'В')
       Then o:=o+1;
       Variant.Text :='';
      end;
  80: begin
       Edit1.Text :='img\80.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'г') or
          (Variant.Text = 'Г')
       Then o:=o+1;
       Variant.Text :='';
      end;
  81: begin
       Edit1.Text :='img\81.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'г') or
          (Variant.Text = 'Г')
       Then o:=o+1;
       Variant.Text :='';
      end;
  82: begin
       Edit1.Text :='img\82.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'в') or
          (Variant.Text = 'В')
       Then o:=o+1;
       Variant.Text :='';
      end;
  83: begin
       Edit1.Text :='img\83.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'д') or
          (Variant.Text = 'Д')
       Then o:=o+1;
       Variant.Text :='';
      end;
  84: begin
       Edit1.Text :='img\84.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'вд') or
          (Variant.Text = 'дв') or
          (Variant.Text = 'Вд') or
          (Variant.Text = 'дВ') or
          (Variant.Text = 'вД') or
          (Variant.Text = 'Дв') or
          (Variant.Text = 'ВД') or
          (Variant.Text = 'ДВ')
       Then o:=o+1;
       Variant.Text :='';
      end;
  85: begin
       Edit1.Text :='img\85.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'б') or
          (Variant.Text = 'Б')
       Then o:=o+1;
       Variant.Text :='';
      end;
  86: begin
       Edit1.Text :='img\86.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'б') or
          (Variant.Text = 'Б')
       Then o:=o+1;
       Variant.Text :='';
      end;
  87: begin
       Edit1.Text :='img\87.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'а') or
          (Variant.Text = 'А')
       Then o:=o+1;
       Variant.Text :='';
      end;
  88: begin
       Edit1.Text :='img\88.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'бд') or
          (Variant.Text = 'дб') or
          (Variant.Text = 'Бд') or
          (Variant.Text = 'дБ') or
          (Variant.Text = 'бД') or
          (Variant.Text = 'Дб') or
          (Variant.Text = 'БД') or
          (Variant.Text = 'ДБ')
       Then o:=o+1;
       Variant.Text :='';
      end;
  89: begin
       Edit1.Text :='img\89.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'а') or
          (Variant.Text = 'А')
       Then o:=o+1;
       Variant.Text :='';
      end;
  90: begin
       Edit1.Text :='img\90.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'б') or
          (Variant.Text = 'Б')
       Then o:=o+1;
       Variant.Text :='';
      end;
  91: begin
       Edit1.Text :='img\91.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'б') or
          (Variant.Text = 'Б')
       Then o:=o+1;
       Variant.Text :='';
      end;
  92: begin
       Edit1.Text :='img\92.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'а') or
          (Variant.Text = 'А')
       Then o:=o+1;
       Variant.Text :='';
      end;
  93: begin
       Edit1.Text :='img\93.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'в') or
          (Variant.Text = 'В')
       Then o:=o+1;
       Variant.Text :='';
      end;
  94: begin
       Edit1.Text :='img\94.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'г') or
          (Variant.Text = 'Г')
       Then o:=o+1;
       Variant.Text :='';
      end;
  95: begin
       Edit1.Text :='img\95.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'д') or
          (Variant.Text = 'Д')
       Then o:=o+1;
       Variant.Text :='';
      end;
  96: begin
       Edit1.Text :='img\96.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'в') or
          (Variant.Text = 'В')
       Then o:=o+1;
       Variant.Text :='';
      end;
  97: begin
       Edit1.Text :='img\97.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'г') or
          (Variant.Text = 'Г')
       Then o:=o+1;
       Variant.Text :='';
      end;
  98: begin
       Edit1.Text :='img\98.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'а') or
          (Variant.Text = 'А')
       Then o:=o+1;
       Variant.Text :='';
      end;
  99: begin
       Edit1.Text :='img\99.jpg';
       Image1.Picture.LoadFromFile(pchar(Edit1.Text));
       If (Variant.Text = 'в') or
          (Variant.Text = 'В')
       Then o:=o+1;
       Variant.Text :='';
      end;
  end;
 end;
end;

Вроде сам цикл у меня расчитан только на 25 проходов, но делает больше. Пытался поставить условие, использовать break, close() все равно не помогает.
Записан
Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 06-11-2009 15:26 » 

Димакрат, я ошибок цикла не заметил, почему он увеличивается - непонятно. Если не секрет - на сколько увеличивается, т.е. до какого числа i?
« Последнее редактирование: 06-11-2009 15:44 от Oldy » Записан

С уважением, Oldy.
Димакрат
Гость
« Ответ #11 : 07-11-2009 08:16 » 

я даже не знаю на сколько. Щелкал я как-то минут 10 и он мне продолжал рандомно картинки открывать. Передумаю я эту структуру, попытаюсь сделать все относительно элемента массива
« Последнее редактирование: 07-11-2009 08:19 от Димакрат » Записан
zubr
Гость
« Ответ #12 : 07-11-2009 10:44 » 

Димакрат, так ты даже не считал, а утверждаешь, что у тебя цикл больше 25 проходит (кто виноват - Windows маздай или Delphi Object Pascal ?). Элементарный тест, вставь в тело цикла до оператора case MessageBox(0, PChar(IntToStr(i)), '', MB_OK); Должно при нажатии кнопки 25 раз выскакивать сообщение с номером итерации цикла. Теперь по алгоритму - ужас, ужас... А если в тесте будет 1000 вопросов, так что будешь для 1000 меток вбивать код в оператор case? Так может тогда стоит тебе в операторы-машинистки переквалифицироваться, имхо больше заработаешь. Подумай как оптимизировать свой код. Даю наводящую подсказку:
Код:
For i:= 1 to 25 do
begin
  a[i]:=1+random(99);
  Edit1.Text :='img\' + IntToStr(a[i]) + '.jpg';
  Image1.Picture.LoadFromFile(pchar(Edit1.Text));
end;
Записан
Димакрат
Гость
« Ответ #13 : 07-11-2009 11:49 » 

Я не на столько глуп) Думал я над этим, если использовать предложенную структуру то встает вопрос сравнивания ответов с правильным. В текстовый документ записывать ответы не вариант, студенты умные, копирнут и картинки и текстовый документ с вариантами ответов. Остается только таблицу использовать, созданную через DataBase и чего то там дальше, но как сравнивать через таблицу для меня это не знакомо, сижу пытаюсь найти как чего но пока без результатов
Записан
Димакрат
Гость
« Ответ #14 : 07-11-2009 11:54 » 

zubr,
поставил MessageBox(0, PChar(IntToStr(i)), '', MB_OK); вроде как 25 раз показывает мне номер вопроса, после ок счелкает следующий вопрос и так дальше, как только 25 становится останавливается
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #15 : 07-11-2009 11:59 » 

Димакрат, текст не сложно зашифровать. Сделай отдельную утилиту для составления запросов, генерации XML-файла и его шифрации, а в тестирующей программе выполняй дешифрацию.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
zubr
Гость
« Ответ #16 : 07-11-2009 15:14 » 

zubr,
поставил MessageBox(0, PChar(IntToStr(i)), '', MB_OK); вроде как 25 раз показывает мне номер вопроса, после ок счелкает следующий вопрос и так дальше, как только 25 становится останавливается
Так все таки цикл работает правильно.
Я не на столько глуп) Думал я над этим, если использовать предложенную структуру то встает вопрос сравнивания ответов с правильным. В текстовый документ записывать ответы не вариант, студенты умные, копирнут и картинки и текстовый документ с вариантами ответов. Остается только таблицу использовать, созданную через DataBase и чего то там дальше, но как сравнивать через таблицу для меня это не знакомо, сижу пытаюсь найти как чего но пока без результатов
Простое решение:
создать константный массив правильных ответов:
Код:
const
  Answers: array[1..100] of Byte = (2, 5, 1, 4, .. , 3);
В любом случае написать массив гораздо меньше кода, чем решение с case;
Записан
Димакрат
Гость
« Ответ #17 : 07-11-2009 23:39 » 

Код:
const
  Answers: array[1..100] of Byte = (2, 5, 1, 4, .. , 3);

а если у меня символы русского алфавита вместо байт char? но он вроде все равно не подходит
Записан
zubr
Гость
« Ответ #18 : 08-11-2009 07:46 » 

Код:
const
  Answers: array[1..100] of char = ('A', 'Б', 'B', 'Г', .. , 'Д');

  if AnsiCompareText(Variant.Text, Answers[a[i]]) = 0 then
  o:=o+1;
« Последнее редактирование: 08-11-2009 07:50 от zubr » Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #19 : 08-11-2009 11:23 » 

коллеги, я всё понимаю, но зачем вот тут pchar?

Цитата
Image1.Picture.LoadFromFile(pchar(Edit1.Text));

просто любопытно.
Записан

x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #20 : 08-11-2009 11:29 » 

Я не на столько глуп) Думал я над этим, если использовать предложенную структуру то встает вопрос сравнивания ответов с правильным. В текстовый документ записывать ответы не вариант, студенты умные, копирнут и картинки и текстовый документ с вариантами ответов. Остается только таблицу использовать, созданную через DataBase и чего то там дальше, но как сравнивать через таблицу для меня это не знакомо, сижу пытаюсь найти как чего но пока без результатов

да ну, ерунда Ага храните код правильного ответа в левом верхнем пикселе картинки, у вас там для этого будет целых три байта. при выводе картинки заливайте этот пиксел цветом фона. это даже в примитивном случае с использованием картинок. а уже если текст есть - там вообще лафа.
Записан

x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #21 : 08-11-2009 13:16 » 

Димакрат, текст не сложно зашифровать. Сделай отдельную утилиту для составления запросов, генерации XML-файла и его шифрации, а в тестирующей программе выполняй дешифрацию.

Ром, реальные пацаны лазят не в файле с запросами, а в файле с результатами Ага. в 10-м классе лицея на лабах один человек прошёл тест полностью, после чего взяли его файл с результатами, написали там, какой он молодец, и скопировали всей банде на дискеты. и фсё.
Записан

Димакрат
Гость
« Ответ #22 : 08-11-2009 15:20 » 

Такой вопрос созрел.
У меня к примеру есть три элемента Edit: Edit1, Edit2, Edit3.
И нужно сделать следующее.

Код:
var
 a: Array [1..3] of Integer;
 i: Integer;
begin
 randomize;
 for i:= 1 to 3 do
 begin
  a[i]:=1+Random(3);
  case i of
  1: Edit1.Text:= IntToStr(a[i]);
  2: Edit2.Text:= IntToStr(a[i]);
  3: Edit3.Text:= IntToStr(a[i]);
  end;
 end;
end;
А можно ли обойтись без case , так что бы число после Edit ровнялось i ?
« Последнее редактирование: 08-11-2009 15:25 от Димакрат » Записан
zubr
Гость
« Ответ #23 : 08-11-2009 15:50 » 

2 варианта:
1. Поместить нужные компоненты TEdit в массив или в TList или в TObjectList или даже в TStringList (вариант с массивом):
Код:
var 
  EditArray: array [1..100] of TEdit;
  edit: TEdit;

for i := 1 to 100 do
begin
  edit := TEdit.Create(Self);
  edit.Parent := Self;
  //дальнейшая инициализация edit
  EditArray[i] := edit;
end;

2.
Код:
 for i := 1 to 3 do
  begin
    a[i]:=1+Random(3);
    TEdit(FindComponent('Edit' + IntToStr(i))).Text := IntToStr(a[i]);
  end;
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #24 : 08-11-2009 15:58 » new

(FindComponent ('Edit' + IntToStr (a )) as TEdit).Text := a ;
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines