Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.09.11;
Скачать: CL | DM;

Вниз

Работа с txt   Найти похожие ветки 

 
Алеша   (2011-05-17 18:31) [0]

Доброго времени суток друзья, я новичок в делфи, и по этому наверное бывалый для Вас, но интересный для меня вопрос.
Так вот.
Я написал тест, в нем было всего 4 вопроса и я выполнил его так:

procedure TForm3.Button1Click(Sender: TObject);
begin
if RadioButton1.Checked=true then
ball:= ball+1
else
ball:= ball;
Label1.Caption:="Выбирите, какое значение означает, что все необходимые для обслуживания интерфейса события генерируются программой?";
RadioButton1.Caption:= "DragCursor";
RadioButton2.Caption:= "dmManual";
RadioButton3.Caption:= "dmAutomatic";
RadioButton4.Caption:= "TDragMode";
Button1.Visible:= false;
Button2.Top:= Button1.Top;
Button2.Left:= Button1.Left;
Button2.Visible:= true;
num:= num+1;
Label2.Caption:= IntToStr(ball);
Label5.Caption:= "Вопрос номер: " + IntToStr(num);
RadioButton1.Checked:= false;
RadioButton2.Checked:= false;
RadioButton3.Checked:= false;
RadioButton4.Checked:= false;
end;

procedure TForm3.Button2Click(Sender: TObject);
begin
if RadioButton2.Checked=true then
ball:= ball+1
else
ball:= ball;
Label1.Caption:="Выбирите, какое значение означает, что события инициируются свойствами и методами компонентов?";
RadioButton1.Caption:= "TDragMode";
RadioButton2.Caption:= "dmManual";
RadioButton3.Caption:= "dmAutomatic";
RadioButton4.Caption:= "DragCursor";
Button2.Visible:= false;
Button3.Top:= Button1.Top;
Button3.Left:= Button1.Left;
Button3.Visible:= true;
num:= num+1;
Label2.Caption:= IntToStr(ball);
Label5.Caption:= "Вопрос номер: " + IntToStr(num);
RadioButton1.Checked:= false;
RadioButton2.Checked:= false;
RadioButton3.Checked:= false;
RadioButton4.Checked:= false;
end;

procedure TForm3.Button3Click(Sender: TObject);
begin
if RadioButton3.Checked=true then
ball:= ball+1
else
ball:= ball;
Label1.Caption:="Выбирите, какой компонент определяет вид указателя мыши в момент, когда над компонентом “протаскиваются данные”?";
RadioButton1.Caption:= "dmManual";
RadioButton2.Caption:= "TDragMode";
RadioButton3.Caption:= "dmAutomatic";
RadioButton4.Caption:= "DragCursor";
Button3.Visible:= false;
Button4.Top:= Button1.Top;
Button4.Left:= Button1.Left;
Button4.Visible:= true;
num:= num+1;
Label2.Caption:= IntToStr(ball);
Label5.Caption:= "Вопрос номер: " + IntToStr(num);
RadioButton1.Checked:= false;
RadioButton2.Checked:= false;
RadioButton3.Checked:= false;
RadioButton4.Checked:= false;
end;

procedure TForm3.Button4Click(Sender: TObject);
begin
if RadioButton4.Checked=true then
ball:= ball+1
else
ball:= ball;
Label1.Caption:="Выбирите, какое свойство компонента TDragState определяет что объект только что покинул компонент или была отпущена кнопка мыши?";
RadioButton1.Caption:= "dsDragLeave";
RadioButton2.Caption:= "dsManual";
RadioButton3.Caption:= "dsDragMove";
RadioButton4.Caption:= "dsDragEnter";
Button4.Visible:= false;
Button5.Top:= Button1.Top;
Button5.Left:= Button1.Left;
Button5.Visible:= true;
num:= num+1;
Label2.Caption:= IntToStr(ball);
Label5.Caption:= "Вопрос номер: " + IntToStr(num);
RadioButton1.Checked:= false;
RadioButton2.Checked:= false;
RadioButton3.Checked:= false;
RadioButton4.Checked:= false;
end;

procedure TForm3.Button5Click(Sender: TObject);
begin
if RadioButton1.Checked= true then
ball:= ball+1
else
ball:= ball;
Label2.Caption:= IntToStr(ball);
Label5.Caption:= "Вопрос номер: " + IntToStr(num);
if (ball <= 5) and  (ball>= 4)
then ocen:= 3;
if ball < 4
then ocen:= 2;
Label4.Caption:= IntToStr(ocen);
Form6.Visible:= true;
Form3.Hide;
end;

procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form1.Close;
end;

procedure TForm3.FormCreate(Sender: TObject);
begin
Label2.Caption:= IntToStr(ball);
Label5.Caption:= "Вопрос номер: " + IntToStr(num);
end;

procedure TForm3.FormShow(Sender: TObject);
begin
ball:= 0;
num:=1;
Label2.Caption:= "";
Label4.Caption:= "";
Label5.Caption:= "Вопрос номер: " + IntToStr(num);
Button1.Visible:= true;
Timer1.Enabled:=True;
TimeVal := Time + 1 / (24 * 60);
end;

procedure TForm3.Timer1Timer(Sender: TObject);
var
Temp : TTime;
begin
Temp := TimeVal - Time;
Label7.Caption := TimeToStr(Temp);
if Frac(Temp) <= 0 then begin
ball:= ball;
Label2.Caption:= IntToStr(ball);
Label5.Caption:= "Вопрос номер: " + IntToStr(num);
if (ball <= 5) and  (ball>= 4)
then ocen:= 3;
if ball < 4
then ocen:= 2;
Label4.Caption:= IntToStr(ocen);
Form6.Visible:= true;
Form3.Hide;
end;
end;
end.


Чтобы Вам не читать зря кратко:
Создал столько кнопок сколько и вопросов и после ответа на вопрос этой же кнопкой скрываются одни поля открываются другие поля с другими вопросами и так далее, короче все примитивно потому что первый раз я все буквально и прямолинейно понял.

Теперь сам вопрос.
У меня теперь задача сделать тест с 70 вопросами, так как делал я это ад - сколько писанины. Вот я и подумал а что если выбирать данные по вопросам вариантам ответов и правильных ключей из txt-файла. Но как это сделать не знаю, Если кто не совсем равнодушный к ночевкам помогите пожалуйста, желательно на примерах, чтоб до меня дошло быстрей и я Вас уважаемые знатоки не дергал по пустякам. Спасибо за внимание. Заранее благодарен всем!!!

P.S. Там в низу нет моего делфи и ОС. У меня Win 7 и Delphi 2007.


 
Anatoly Podgoretsky ©   (2011-05-17 18:52) [1]

> Алеша  (17.05.2011 18:31:00)  [0]

Используй БД


 
Алеша   (2011-05-17 19:54) [2]

Каким образом, дай пример если есть.


 
Gu   (2011-05-17 20:20) [3]

С БД думаю будет сложновато для начала.
Можете попробовать использовать типизированные файлы. Например одна программа будет формировать такой файл, а вторая брать из него данные и производить опрос.
Пример простой:

// заполняем

Сonst x1=69; // кол-во вопросов

Type TMyType=Record
Zagolovok:string;
VoprosNom:Integer;
VoprosTxt:string;
OtvetTxt:string;
... // и так далее
End;

Var Ocenka:integer=0; MyFile:TMyType;

...
Procedure BtnClick1(..);
var x:integer;vopros:TMytype;
begin
assignfile(myfile,"c:\voprosy.my");
Rewrite(myfile);
for x:=0 to x1 do begin
form2.showmodal; // окно формирования вопроса
vopros.zagolovok:=form2.edit1.text;
vopros.voprosnom:=x;
vopros.voprostxt:=form2.edit2.text;
vopros.otvettxt:=form2.edit3.text;
writeln(myfile,vopros);
end;
Closefile(myfile);
end;

// читаем
Procedure BtnClick1(..);
var x:integer;vopros:TMytype;
begin
assignfile(myfile,"c:\voprosy.my");
Reset(myfile);
for x:=0 to x1 do begin
readln(myfile,vopros);
form3.edit1.text:=vopros.zagolovok;
x:=vopros.voprosnom;
form3.caption:="Вопрос номер: "+inttostr(x);
form3.edit2.text:=vopros.voprostxt;
form3.showmodal; // окно показа вопроса
if form3.edit3.text=vopros.otvettxt then inc(ocenka);
end;
Closefile(myfile);
end;

пишу по памяти, мож гдето ошибся, смысл передать общую идею

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

var ini:tinifile;s:string;
..
begin
ini:=tinifile.create("c:\my.ini");
ini.writestring("1","2","моя строка");
..
ini.readstring("1","2",s);
...
ini.free;


 
Gu   (2011-05-17 20:27) [4]

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


 
Jeer ©   (2011-05-17 20:54) [5]


> Если кто не совсем равнодушный к ночевкам


Я не равнодушен к ночевкам на природе в среде прекрасных дам.
Еще вопросы ?

СУБД бывают разные (сложные, простые, дорогие, Lite), но основное достоинство, в отличии от всяких иных костылей - они основаны на реляционной алгебре, что позволяет стандартным образом извлекать подмножества данных, в соответствии с заданными критериями.


 
Dennis I. Komarov ©   (2011-05-18 11:41) [6]


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

Мдя, наверное лучше их как-то создавать непосредствено перед тем как они нужны и удалять за ненадобностью...


> У меня теперь задача сделать тест с 70 вопросами, так как
> делал я это ад - сколько писанины. Вот я и подумал а что
> если выбирать данные по вопросам вариантам ответов и правильных
> ключей из txt-файла.

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


> Если кто не совсем равнодушный к ночевкам помогите пожалуйста,
>  желательно на примерах

"И ключ от квартиры..." (С)


 
Плохиш ©   (2011-05-18 20:21) [7]


> Anatoly Podgoretsky ©   (17.05.11 18:52) [1]
>
> > Алеша  (17.05.2011 18:31:00)  [0]
>
> Используй БД
>

Да ты совсем садист. Нафига тут бд, 20 строк хранить?
Текстовый файл за глаза. А аффтару надо просто нанять программиста.


 
Anatoly Podgoretsky ©   (2011-05-18 21:45) [8]

Я разве про хранение? пусть хранит где угодно.


 
Алеша   (2011-05-19 07:59) [9]

Спасибо Всем, очень помогли, приму к сведению предложения)


 
Алеша   (2011-05-19 08:29) [10]


> Например одна программа будет формировать такой файл, а
> вторая брать из него данные и производить опрос.

Здравствуй, я не понял две программы это два модуля?


 
Алеша   (2011-05-19 08:42) [11]

Еще вопрос, как вывести первую сроку из ini или txt файла в caption лайбла?(это все связанное с типизацией файлов) Спасибо.


 
Dennis I. Komarov ©   (2011-05-19 09:03) [12]

Открыть файл
Прочитать строку
Присвоить заголовку лэйбла
Закрыть файл


 
Jeer ©   (2011-05-19 10:23) [13]


> Dennis I. Komarov ©   (19.05.11 09:03) [12]


Еще надо добавить к Вашему посту, какие кнопки и клавиши ему нажимать :)


 
Алеша   (2011-05-19 12:33) [14]

Спасибо,  на примере можете отразить?


 
Dennis I. Komarov ©   (2011-05-19 12:39) [15]

Можно, но дорого...


 
Алеша   (2011-05-19 13:13) [16]

Сколько?


 
Dennis I. Komarov ©   (2011-05-19 14:04) [17]

$100


 
Anatoly Podgoretsky ©   (2011-05-19 14:10) [18]

> Dennis I. Komarov  (19.05.2011 14:04:17)  [17]

Чего так дешево?


 
Dennis I. Komarov ©   (2011-05-19 14:31) [19]


> Чего так дешево?

Ну так это за пример только, да и то не осилит...


 
Алеша   (2011-05-19 14:43) [20]

Это только обработка ini-файла $100, чет за курсовые я мало беру, если это столько стоит)


 
Dennis I. Komarov ©   (2011-05-19 14:57) [21]


> Это только обработка ini-файла $100

это только за перевод [12] в паскаль...
10% за работу, остальное за вредность...

> чет за курсовые я мало беру, если это столько стоит

ну ты еще ВАЗ с Мерседесом сравни и удивись...


 
Anatoly Podgoretsky ©   (2011-05-19 16:16) [22]

> Dennis I. Komarov  (19.05.2011 14:57:21)  [21]

А про хлеб с маслом и икоркой забыл?


 
Dennis I. Komarov ©   (2011-05-19 16:19) [23]


> Anatoly Podgoretsky ©   (19.05.11 16:16) [22]


Не, не забыл... Чего-то сегодня не хотца...


 
Gu   (2011-05-20 00:51) [24]

Я набросал для вас тестовую программку: создает и редактирует ini файл с вопросами и вариантами ответов, проводит по ним тестирование (тестовое).

Написана на D2010, но на вашей дельфе тоже должна открыться.
В тексте сделал коменты на русском для вас. Ini прилагается с 4я вопросами, но можете его удалить и свои вопросы добавить.

Удачи.

Скачать (exe+исходник,485 Кб):

https://rapidshare.com/files/2279153882/GuIniDemo.zip
или
http://www.sendspace.com/file/kstjf9


 
Алеша   (2011-05-24 21:53) [25]

Большое спасибо за исходник, очень помог, спасибо за помощь


 
Dennis I. Komarov ©   (2011-05-25 13:46) [26]

Ничерта там полезного нету...
1. Разобраться с созданием экземпляра класса в Design-time
2. Определиться, с местом хранения и научиться обрабатывать эти данные. Я рекомендую XML, хотя и простого текста тут хватит за глаза. Ini использовать не стоит, т.к. принято что это структура для хранения настроек программы.


 
Dennis I. Komarov ©   (2011-05-25 17:02) [27]


> экземпляра класса в Design-time

упс, в run-timе


 
Gu   (2011-05-27 02:21) [28]

>> Ini использовать не стоит, т.к. принято что это структура для хранения настроек программы.

Число вопросов заранее известно и это число не большое. ini тут как раз один из оптимальных вариантов решения. xml думаю тут не нужен, т.к. его основное применение - мультиплатформенность и универсальность передачи инфы между приложениями. тулт либо текстовые файлы, либо типизированые, либо простые БД, типа dbf. Вариант с БД можете построить на моем примере, который давал тут: http://delphimaster.net/view/15-1304663468/ , компонент про который там говорю и его исходник для D7-Xe можно скачать тут: http://turbobit.net/ds4i2djh0p36.html


 
Dennis I. Komarov ©   (2011-05-27 09:23) [29]


> Число вопросов заранее известно и это число не большое.
> ini тут как раз один из оптимальных вариантов решения.


Сегодня может быть, завтра уже нет, появятся картинки в вопросах, вырианты с не единственными решениями и т.п.
З.Ы. И не надо плоскогубцами забивать гвозди...



Страницы: 1 вся ветка

Текущий архив: 2011.09.11;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.006 c
2-1306139213
ixen
2011-05-23 12:26
2011.09.11
Отчет в MS Word


15-1305844976
Германн
2011-05-20 02:42
2011.09.11
Инструмент для анализа TCP


2-1304775275
Alexlafa
2011-05-07 17:34
2011.09.11
Программирование базы данных MS Access в Delphi 7


15-1305963731
bss
2011-05-21 11:42
2011.09.11
Архив ТВ-программ


1-1265878460
Владимир З.
2010-02-11 11:54
2011.09.11
Что приходит в flash?