Текущий архив: 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