Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа с txt


Страницы:   1 2

Алеша ©   (2011-05-17 18:31:00) 

Доброго времени суток друзья, я новичок в делфи, и по этому наверное бывалый для Вас, но интересный для меня вопрос.
Так вот.
Я написал тест, в нем было всего 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.


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

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


Anatoly Podgoretsky   (2011-05-18 21:45:00) [22]

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


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


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

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


Dennis I. Komarov   (2011-05-18 11:41:00) [24]


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

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


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

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


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

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


Jeer   (2011-05-17 20:54:00) [25]


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


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

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


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

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


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

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

// заполняем

С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;


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

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


Anatoly Podgoretsky   (2011-05-17 18:52:00) [29]

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

Используй БД


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо