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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2010, 19:05   #1
misher
Участник клуба
 
Аватар для misher
 
Регистрация: 26.05.2010
Сообщений: 1,648
По умолчанию Добавить файл в тест

В тесте должны браться файлы из папки Test. Как её добавить в этот код?
Код:
 while FileExists(ExtractFilePath(application.ExeName)+TestName+inttostr(i)+'.txt') do
-это проверка.
Код:
s.LoadFromFile(ExtractFilePath(application.ExeName)+TestName+inttostr(i)+'.txt');
-это загрузка.
Так она берется там где сама прога лежит.
This world will never be What I expected (c)
misher вне форума Ответить с цитированием
Старый 10.09.2010, 19:40   #2
uraura
Пользователь
 
Регистрация: 29.10.2008
Сообщений: 87
По умолчанию

я так понял в папке с экзешником лежит папка Test если так то просто
добавь после ExtractFilePath(application.ExeName )+'\Test\'
uraura вне форума Ответить с цитированием
Старый 10.09.2010, 19:58   #3
misher
Участник клуба
 
Аватар для misher
 
Регистрация: 26.05.2010
Сообщений: 1,648
По умолчанию

Цитата:
ExtractFilePath(application.ExeName )+'\Test\'
заменил эту строку и не работает там нечего не надо добавить после
Код:
+'\Test\'
?
This world will never be What I expected (c)
misher вне форума Ответить с цитированием
Старый 10.09.2010, 20:25   #4
uraura
Пользователь
 
Регистрация: 29.10.2008
Сообщений: 87
По умолчанию

вот накидал пример загрузки и чтения текстового файла из папки
посмотрите может что-то возьмете из него
пример.rar
uraura вне форума Ответить с цитированием
Старый 10.09.2010, 21:08   #5
misher
Участник клуба
 
Аватар для misher
 
Регистрация: 26.05.2010
Сообщений: 1,648
По умолчанию

Код:
procedure TForm8.FormCreate(Sender: TObject);
var
  s: Tstrings;
  i: Integer;
begin
  i:=0;
  while FileExists(ExtractFilePath(application.ExeName)+TestName+inttostr(i)+'.txt') do
  // проверяем файлы тестов
  begin
  application.ProcessMessages;  // что б не тормозило
  s:=tstringlist.Create;        // создаем переменную
  s.LoadFromFile(ExtractFilePath(application.ExeName)+TestName+inttostr(i)+'.txt'); // загружаем файл
    if s.Text<>'' then  // если не пуст то
    TestBox.Items.Add(s.Strings[0]); // добавляем в группу тестов название теста
  s.Free;  // уничтожаем переменную
  inc(i);  // увеличиваем счетчик
  end;
end;

procedure TForm8.LoadTest(Index: integer);   // загружаем выбранный тест
var
  s: Tstrings;
  j, h: Integer;
begin
  h:=0;
  s:=tstringlist.Create;  // создаем переменную
 s.LoadFromFile(ExtractFilePath(application.ExeName)+TestName+inttostr(h)+'.txt');
    if s.Text<>'' then  // если не пустая то
    begin
    form8.Caption:=s.Strings[0]; // название теста
      for j := 1 to s.Count - 1 do // начинаем присваивать значения
      begin
        if s.Strings[j]='__________' then  // это разделитель который мы ищем
        begin
        QuestionText[h]:=s.Strings[j+1]; // текст вопроса
        QuestionText1[h]:=s.Strings[j+2];// текст первого вариант ответа
        QuestionText2[h]:=s.Strings[j+3];// текст второго варианта ответа
        QuestionText3[h]:=s.Strings[j+4];// текст третьего варианта ответа
        AnswerQuestion[h]:=strtoint(s.Strings[j+5]); // номер ответа
        inc(h); // увеличиваем счетчик для того что бы записывать в новый элемент массива
        end;
      end;
    end;
  s.Free; // уничтожаем переменную
  LoadQuestion(now);// загружаем вопрос здесь он всегда = 0
end;
как в это вставить??? я уже не знаю что делать(((...
This world will never be What I expected (c)
misher вне форума Ответить с цитированием
Старый 10.09.2010, 21:32   #6
uraura
Пользователь
 
Регистрация: 29.10.2008
Сообщений: 87
По умолчанию

по моему везде где есть ExtractFilePath
после ExeName) добавь
+'test\'
test - это имя твоей папки в которой лежат твои текстовые файлы
uraura вне форума Ответить с цитированием
Старый 10.09.2010, 21:43   #7
glGizma
Пользователь
 
Регистрация: 25.02.2010
Сообщений: 49
По умолчанию

Замени:
Цитата:
while FileExists(ExtractFilePath(applicat ion.ExeName)+TestName+inttostr(i)+' .txt') do
На:
Код:
while (extractFileDir(ParamSTR(0))+'test\file.txt') do
Попо(з)же по грамотному сделаю...
glGizma вне форума Ответить с цитированием
Старый 10.09.2010, 21:53   #8
misher
Участник клуба
 
Аватар для misher
 
Регистрация: 26.05.2010
Сообщений: 1,648
По умолчанию

если заменить, то ошибка...Подожду.Лучше грамотно...
Только пожалуйста придерживайтесь моего теста...другого я не создам
Код:
unit Unit8;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, jpeg;

type
  TForm8 = class(TForm)
    AnswerGroup: TRadioGroup;
    Button1: TButton;
    TestBox: TComboBox;
    GroupBox1: TGroupBox;
    Question: TLabel;
    Button2: TButton;
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
    procedure LoadTest(Index: integer);
    procedure LoadQuestion(Index: integer);
    procedure Button1Click(Sender: TObject);
    procedure TestBoxCloseUp(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

const
  TestName='Test_'; // имя файла теста
  max=1000; // максимальное количесво вопросов
var
  Form8: TForm8;
  QuestionText: array [0..max] of string; // текст вопроса
  AnswerQuestion: array [0..max] of byte; // правильный вариант ответа
  QuestionText1: array [0..max] of string;// первый вопрос
  QuestionText2: array [0..max] of string;// второй вопрос
  QuestionText3: array [0..max] of string;// третий вопрос
  Ball: integer=0;                        // оценка
  now: integer=0;                         // текущий вопрос
implementation

{$R *.dfm}

procedure TForm8.Button1Click(Sender: TObject);
begin
  if AnswerQuestion[now]=AnswerGroup.ItemIndex+1 then  // сравниваем значение ответа и выбранного значения
  inc(ball);
  AnswerGroup.ItemIndex:=-1;  // убираем выдаление с группы ответов
  inc(now);                   // увеличиваем вопрос на 1+
  LoadQuestion(now);          // загружаем его
end;

procedure TForm8.FormCreate(Sender: TObject);
var
  s: Tstrings;
  i: Integer;
begin
  i:=0;
  while FileExists(ExtractFilePath(application.ExeName)+TestName+inttostr(i)+'.txt') do
  // проверяем файлы тестов
  begin
  application.ProcessMessages;  // что б не тормозило
  s:=tstringlist.Create;        // создаем переменную
  s.LoadFromFile(ExtractFilePath(application.ExeName)+TestName+inttostr(i)+'.txt'); // загружаем файл
    if s.Text<>'' then  // если не пуст то
    TestBox.Items.Add(s.Strings[0]); // добавляем в группу тестов название теста
  s.Free;  // уничтожаем переменную
  inc(i);  // увеличиваем счетчик
  end;
end;

procedure TForm8.LoadTest(Index: integer);   // загружаем выбранный тест
var
  s: Tstrings;
  j, h: Integer;
begin
  h:=0;
  s:=tstringlist.Create;  // создаем переменную
 s.LoadFromFile(ExtractFilePath(application.ExeName)+TestName+inttostr(h)+'.txt');
    if s.Text<>'' then  // если не пустая то
    begin
    form8.Caption:=s.Strings[0]; // название теста
      for j := 1 to s.Count - 1 do // начинаем присваивать значения
      begin
        if s.Strings[j]='__________' then  // это разделитель который мы ищем
        begin
        QuestionText[h]:=s.Strings[j+1]; // текст вопроса
        QuestionText1[h]:=s.Strings[j+2];// текст первого вариант ответа
        QuestionText2[h]:=s.Strings[j+3];// текст второго варианта ответа
        QuestionText3[h]:=s.Strings[j+4];// текст третьего варианта ответа
        AnswerQuestion[h]:=strtoint(s.Strings[j+5]); // номер ответа
        inc(h); // увеличиваем счетчик для того что бы записывать в новый элемент массива
        end;
      end;
    end;
  s.Free; // уничтожаем переменную
  LoadQuestion(now);// загружаем вопрос здесь он всегда = 0
end;

procedure TForm8.TestBoxCloseUp(Sender: TObject);
begin
  // при выборе теста обнуляем все значения
  ball:=0;
  now:=0;
  button1.Enabled:=true;
  LoadTest(TestBox.ItemIndex);// загружаем выбранный тест
end;

procedure TForm8.LoadQuestion(Index: integer);
begin
  if QuestionText[Index]<>'' then// если выбранный вопрос существует то грузим его
  begin
  AnswerGroup.Items.Clear;// очищаем поле ответов
  Question.Caption:=QuestionText[Index];// задаем запрос
  AnswerGroup.Items.Add(QuestionText1[index]);// добавляем ответы
  AnswerGroup.Items.Add(QuestionText2[index]);
  AnswerGroup.Items.Add(QuestionText3[index]);
  end
  else // иначе сообщаем что тест завершен
  begin
  showmessage('Тест завершен'+#13+'Правильных ответов: '+inttostr(ball)); // сообщение что типа тест окончен и выдаем количесво правильных ответов
  button1.Enabled:=false; // делаем неактивной кнопку что бы не тыкали
  end;
end;

procedure TForm8.Button2Click(Sender: TObject);
begin
close;
end;

end.
This world will never be What I expected (c)

Последний раз редактировалось misher; 10.09.2010 в 22:07.
misher вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавить файл в архив Aleksandr Общие вопросы Delphi 9 24.06.2012 12:34
Добавить в файл... qwerty55 Общие вопросы Delphi 4 24.02.2010 15:16
Тест-файл lalilulelo Помощь студентам 4 29.05.2009 10:49
Как добавить в файл несколько строк?! zotox Помощь студентам 4 11.09.2008 22:32
Добавить лист в pdf файл jungo Microsoft Office Excel 1 10.07.2008 16:45