Димакрат
Гость
|
|
« : 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
Пол:
|
|
« Ответ #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
|
|
« Ответ #3 : 01-11-2009 15:10 » |
|
For i:= 1 to 25 do a:=1+random[99]; // вот здесь ругается и пишет ошибку Array type required
random - стандартная функция языка, требующая ПАРАМЕТР. ПАРАМЕТР задаётся в круглых скобках. Надо начинать изучать язык.
|
|
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #4 : 02-11-2009 04:35 » |
|
RXL, то есть, мне нужно описать еще один массив с 99 элементами от 0 до 98?
Нет. Надо не гадать, а думать.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
x77
Модератор
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
|
|
« Ответ #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
|
|
« Ответ #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
|
|
« Ответ #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
Пол:
|
|
« Ответ #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
Модератор
Offline
Пол:
меняю стакан шмали на обратный билет с Марса.
|
|
« Ответ #19 : 08-11-2009 11:23 » |
|
коллеги, я всё понимаю, но зачем вот тут pchar? Image1.Picture.LoadFromFile(pchar(Edit1.Text)); просто любопытно.
|
|
|
Записан
|
|
|
|
x77
Модератор
Offline
Пол:
меняю стакан шмали на обратный билет с Марса.
|
|
« Ответ #20 : 08-11-2009 11:29 » |
|
Я не на столько глуп) Думал я над этим, если использовать предложенную структуру то встает вопрос сравнивания ответов с правильным. В текстовый документ записывать ответы не вариант, студенты умные, копирнут и картинки и текстовый документ с вариантами ответов. Остается только таблицу использовать, созданную через DataBase и чего то там дальше, но как сравнивать через таблицу для меня это не знакомо, сижу пытаюсь найти как чего но пока без результатов
да ну, ерунда храните код правильного ответа в левом верхнем пикселе картинки, у вас там для этого будет целых три байта. при выводе картинки заливайте этот пиксел цветом фона. это даже в примитивном случае с использованием картинок. а уже если текст есть - там вообще лафа.
|
|
|
Записан
|
|
|
|
x77
Модератор
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
Модератор
Offline
Пол:
меняю стакан шмали на обратный билет с Марса.
|
|
« Ответ #24 : 08-11-2009 15:58 » |
|
(FindComponent ('Edit' + IntToStr (a )) as TEdit).Text := a ;
|
|
|
Записан
|
|
|
|
|