Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2015, 09:15   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
через файл ini как реализовать?
Рекомендую:
http://yandex.ua/yandsearch?text=INI...2015&numdoc=50
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.05.2015, 15:00   #12
manchester_alan
Форумчанин
 
Регистрация: 07.01.2015
Сообщений: 231
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
ну из ini я уже сделал как перенести вопросы... а как сделать чтобы они наугад выдавались..?
manchester_alan вне форума Ответить с цитированием
Старый 13.05.2015, 15:02   #13
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А как ты в ИНИ их оформил и как считываешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.05.2015, 15:06   #14
manchester_alan
Форумчанин
 
Регистрация: 07.01.2015
Сообщений: 231
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А как ты в ИНИ их оформил и как считываешь?
Вот к примеру то что в Ini
[quest1]
quest=Как называтся икона (1411 или 1427), которую написал Андрей Рублев?
var1=Четверка
otvet=Тройца
var2=Двойка
[quest2]
quest=Картина Сандро Боттичелли (1486) называется:
otvet=Рождение Венеры
var1=Жизнь Юпитера
var2=Смерть Плутона

А вот как в delphi
Код:
case QuestionNum of
   1:
   begin
     k:=0;
     RadioButton1.Checked:=False; RadioButton2.Checked:=False; RadioButton3.Checked:=False;
     quest:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'вопросы ответы.ini');
     memo1.Lines.Add(quest.ReadString('quest'+inttostr(QuestionNum),'quest',''));
     otvetstr:=(quest.ReadString('quest'+inttostr(QuestionNum),'otvet',''));
     RadioButton1.Caption:=quest.ReadString('quest'+inttostr(QuestionNum),'var1','');
     RadioButton2.Caption:=quest.ReadString('quest'+inttostr(QuestionNum),'otvet','');
     RadioButton3.Caption:=quest.ReadString('quest'+inttostr(QuestionNum),'var2','');
   end;
   2:
   begin
   RadioButton1.Checked:=False; RadioButton2.Checked:=False; RadioButton3.Checked:=False;
     memo1.Lines.Clear;
     quest:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'вопросы ответы.ini');
     memo1.Lines.Add(quest.ReadString('quest'+inttostr(QuestionNum),'quest',''));
     otvetstr:=(quest.ReadString('quest'+inttostr(QuestionNum),'otvet',''));
     RadioButton1.Caption:=quest.ReadString('quest'+inttostr(QuestionNum),'otvet','');
     RadioButton2.Caption:=quest.ReadString('quest'+inttostr(QuestionNum),'var1','');
     RadioButton3.Caption:=quest.ReadString('quest'+inttostr(QuestionNum),'var2','');
  end;
manchester_alan вне форума Ответить с цитированием
Старый 13.05.2015, 15:25   #15
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ага:
Код:
Hazuon:TStringList;
...
Hazuon:=TStringList.Create;
quest:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'вопросы ответы.ini');
quest.ReadSections(Hazuon);
...
Цикл
   QuestionNum:=random(Hazuon.Count);
   RadioButton1.Checked:=False; RadioButton2.Checked:=False; RadioButton3.Checked:=False;
     memo1.Lines.Clear;
     
     memo1.Lines.Add(quest.ReadString(Hazuon[QuestionNum],'quest',''));
     otvetstr:=(quest.ReadString(Hazuon[QuestionNum],'otvet',''));
     RadioButton1.Caption:=quest.ReadString(Hazuon[QuestionNum],'otvet','');
     RadioButton2.Caption:=quest.ReadString(Hazuon[QuestionNum],'var1','');
     RadioButton3.Caption:=quest.ReadString(Hazuon[QuestionNum],'var2','');
Конец цикла

Hazuon.Free;
quest.Free;
А Case отсюда вообше убрать надо.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.05.2015, 15:34   #16
manchester_alan
Форумчанин
 
Регистрация: 07.01.2015
Сообщений: 231
По умолчанию

а цикл в смысле for... ?
manchester_alan вне форума Ответить с цитированием
Старый 13.05.2015, 15:39   #17
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну я же не знаю какой тебе нужно )
можешь поставить так:
Код:
while Hazuon.Count>0 do begin
...
 Hazuon.Delete(QuestionNum);
end;
Тогда будет вперемешку, без повторов и закончится, когда вопросы иссякнут.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.05.2015, 16:03   #18
manchester_alan
Форумчанин
 
Регистрация: 07.01.2015
Сообщений: 231
По умолчанию

ой спасибо от души)) все работает!))) правда теперь он тоже 1 вариант все время прокручивает....в чем дело..? и как подсчитать количество правильных ответов??

Последний раз редактировалось manchester_alan; 13.05.2015 в 16:05.
manchester_alan вне форума Ответить с цитированием
Старый 13.05.2015, 16:04   #19
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А ну да )
Тебе бы нужно прикрутить какую нить кнопку типа "Дальше", и в ней (выкинув теперь цикл) вставить код из него. Тогда тест покажется, юзер даст ответ, нажмет "Далее" и получит следующий вопрос.
Типа такого:
Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private   Hazuon:TStringList;
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
     Hazuon:=TStringList.Create;
quest:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'вопросы ответы.ini');
quest.ReadSections(Hazuon);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
      QuestionNum:=random(Hazuon.Count);
   RadioButton1.Checked:=False; RadioButton2.Checked:=False; RadioButton3.Checked:=False;
     memo1.Lines.Clear;

     memo1.Lines.Add(quest.ReadString(Hazuon[QuestionNum],'quest',''));
     otvetstr:=(quest.ReadString(Hazuon[QuestionNum],'otvet',''));
     RadioButton1.Caption:=quest.ReadString(Hazuon[QuestionNum],'otvet','');
     RadioButton2.Caption:=quest.ReadString(Hazuon[QuestionNum],'var1','');
     RadioButton3.Caption:=quest.ReadString(Hazuon[QuestionNum],'var2','');
   Hazuon.Delete(QuestionNum);
end;

end.
Цитата:
а как подсчитать количество правильных ответов?
Заведи переменку глобальную и в нее плюсуй если ответ правильный.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.05.2015, 16:07   #20
manchester_alan
Форумчанин
 
Регистрация: 07.01.2015
Сообщений: 231
По умолчанию

ну так это я и делал по кнопке далее) только вот теперь один случайный вариант выводит и все... а хотелось бы чтоб все время наугад..
manchester_alan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
тест в delphi !2marselo12 Общие вопросы Delphi 8 05.12.2014 12:23
Тест на Delphi DedSero Фриланс 8 20.03.2013 07:42
Тест в Delphi 7 Ербулат Общие вопросы Delphi 3 13.06.2012 13:32
Тест на delphi Серый Рыйцарь Помощь студентам 1 11.05.2009 05:58
Программа-тест в Delphi) скиньте))а то програмку здавать преподу надо,и самой хочется понять Delphi Верчик Помощь студентам 9 02.03.2009 17:46