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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2011, 22:39   #11
obsession
Пользователь
 
Аватар для obsession
 
Регистрация: 08.05.2011
Сообщений: 61
По умолчанию

курсор остановился в проджекте на строке Application.Run;

я то что надо сделала???
obsession вне форума Ответить с цитированием
Старый 08.05.2011, 22:46   #12
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

*посмотрел исходник*

Наверное то, но те там. Ошибка возникает когда жмётся кнопка "Начать тест", а не когда происходит запуск. Сообственно брекпоинт надо было ставить на строке

Код:
if messagedlg('Вы уверены, что хотите выбрать эту категорию?',mtconfirmation,[mbyes,mbno],0)=mryes
Поставте и пожмакайте F8. Программа будет выполняться по строкам и будет прекрасно видно где вылетит с ошибкой.

Кароче ошибка возникает тут: radiogroup1.Items[3]:=s5; - попытка обратиться к несуществующему индексу (у радиограуп1 всего от 0 до 2 индексов)

Я подозреваю что из за невнимательности был перепутан индекс радиограупа. Тоесть должно быть так:

Код:
radiogroup2.Items[0]:=s2;
radiogroup2.Items[1]:=s3;
radiogroup2.Items[2]:=s4;
radiogroup2.Items[3]:=s5;
radiogroup2.ItemIndex:=0;
И дальше по коду аналогично, спутаны индексы.

адд: логику программы я понять не смог, но скажу сразу, что вторая ошибка будет тут:

Код:
if radiogroup2.ItemIndex=strtoint(s6) then c:=c+1;
s6 = '' и соответственно произойдёт ошибка.

Если эту строку закоментировать то программа будет работать без ошибок, но при этом ничего не делать xD
Сливочное масло Valio - компиляция как по маслу

Последний раз редактировалось Valio; 08.05.2011 в 22:59.
Valio вне форума Ответить с цитированием
Старый 08.05.2011, 23:08   #13
obsession
Пользователь
 
Аватар для obsession
 
Регистрация: 08.05.2011
Сообщений: 61
По умолчанию

не не нееее........ у радиогруп2 от 0 до 3 стоит(4 строки, 4 переключателя)

то что я спутала, это точно изза невнимательности... голова пухнет уже...

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

а что тогда можно сделать со строчкой???
Код:
if radiogroup2.ItemIndex=strtoint(s6) then c:=c+1;
obsession вне форума Ответить с цитированием
Старый 08.05.2011, 23:27   #14
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

В этой строке судя по всему идёт проверка варианта ответа выбраного юзером с правильным вариантом ответа который должен был быть выбран из файла во в этом куске кода:

Код:
if radiogroup1.ItemIndex=2 then begin
    reset(f3);
    if eof(f3)=false then begin
    readln(f3,s1); readln(f3,s2); readln(f3,s3); readln(f3,s4); readln(f3,s5);
    closefile(f3);
    end; end;
Если присмотреться повнимательней то тут не происходит выбор этой строки. Опятьже невнимательность, нужно дописать: readln(f3,s6);

Потомучто структура файла намекает(не я её придумывал):

Цитата:
1. Килобайт
256 байт
1000 байт
1024 байт
10000 байт
2
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 08.05.2011, 23:34   #15
obsession
Пользователь
 
Аватар для obsession
 
Регистрация: 08.05.2011
Сообщений: 61
По умолчанию

тааааак.... теперь он повторяет один единственный вопрос (первый). и это происходит бесконечное количиство раз... в чем проблема?? в цикле каком нибудь??? да?
obsession вне форума Ответить с цитированием
Старый 08.05.2011, 23:58   #16
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

1. С циклами всё впорядке. Дело в том что фаил открывается в начале, потом считывается пять строк, затем закрывается.

Затем снова открывается, считывается теже 5 строк и снова закрывается.

И так далее.

Чтоб такого не происходило нужно один раз открыть фаил и один раз его закрыть.

2. Вот для одного типа вопросов. Я взял фаил test3.txt как самый адекватнозаполненый. Там в самом конце ему надо дописать вариант ответа, а то вылетит с ошибкой чтения при попытке считать последний вопрос.

Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
label1.Hide;
radiogroup2.Hide;
button1.Show;
button3.Hide;
button2.Show;
radiogroup1.Show;
c := 0;
assignfile(f1,'test3.txt');
end;

Procedure TForm1.Button1Click(Sender: TObject);
Begin
// Открыли фаил
reset(f1);
If radiogroup1.ItemIndex = 0 Then
  Begin
    If eof(f1) = false Then
      Begin
        readln(f1,s1);
        readln(f1,s2);
        readln(f1,s3);
        readln(f1,s4);
        readln(f1,s5);
        readln(f1,s6);
      End;
  End;
// Скпрятали чтото
label1.Show;
radiogroup2.Show;
button1.Hide;
button2.Show;
button3.Show;
radiogroup1.Hide;
// Заполнили чтото
label1.Caption := s1;
radiogroup2.Items[0]:=s2;
radiogroup2.Items[1]:=s3;
radiogroup2.Items[2]:=s4;
radiogroup2.Items[3]:=s5;
radiogroup2.ItemIndex:=0;
End;

procedure TForm1.Button2Click(Sender: TObject);
begin
closefile(f1);
application.Terminate;
end;

Procedure TForm1.Button3Click(Sender: TObject);
Begin
// Проверим правильно ли юзер ответил на вопрос.
// Если да то c+
If radiogroup2.ItemIndex=strtoint(s6) Then c := c + 1;

// Если выбран 1 тип вопросов то ...
If radiogroup1.ItemIndex = 0 Then
  Begin
    If eof(f1)=false Then
      Begin
        // Читаем фаил по строчкам. Вопрос, 4 ответа, 1 правильный ответ.
        readln(f1,s1); readln(f1,s2); readln(f1,s3); readln(f1,s4); readln(f1,s5); readln(f1,s6);
        // Выводим на форму
        label1.Caption := s1;
        radiogroup2.Items[0] := s2;
        radiogroup2.Items[1] := s3;
        radiogroup2.Items[2] := s4;
        radiogroup2.Items[3] := s5;
        radiogroup2.ItemIndex := 0;
      End
    Else
      Begin // если фаил завершился то скрываем кучку элементов
        label1.Hide;
        radiogroup2.Hide;
        button1.Hide;
        button2.Show;
        button3.Hide;
        radiogroup1.Hide;
        // Сообщим юзеру о его успехах.
        ShowMessage('Вы правильно ответили на ' + IntToStr(c) + ' вопросов.');
      End;
  End;
// End
End;
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 09.05.2011, 00:15   #17
obsession
Пользователь
 
Аватар для obsession
 
Регистрация: 08.05.2011
Сообщений: 61
По умолчанию

я посмотрела код.
исправила свой.
и всё равно повтор первого вопроса...
obsession вне форума Ответить с цитированием
Старый 09.05.2011, 00:20   #18
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Скинь исправленый архив.

Повтор 1-ого вопроса из за того что фаил по новой открывается.
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 09.05.2011, 00:29   #19
obsession
Пользователь
 
Аватар для obsession
 
Регистрация: 08.05.2011
Сообщений: 61
По умолчанию

таааааак.... исправила ошибку повтора, теперь гдето присваивание не туда пошло или что то еще.


ооооооо............. у меня сейчас 3 часа ночи... я одна дома не сплю.... бошка пухнет конкретно.... я щас взорвусь.

но! надо доделать. на завтра у меня другая работа...

вот архив-файл с моим исправленным кодом
тест.rar
obsession вне форума Ответить с цитированием
Старый 09.05.2011, 00:52   #20
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

хз, опять както всё не так.
Вложения
Тип файла: rar 46.rar (178.3 Кб, 8 просмотров)
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
EStringListError with message 'List index out of bounds (644)' после удаления дубликатов dzds Помощь студентам 2 25.03.2011 09:39
ошибка raized exception class EListError with message 'List index out of bounds(1)'.Process stopped SGRaptor Софт 0 22.05.2010 19:12
Project Project1.exe raised exception class EnvalidOP Rock'n'rolla Безопасность, Шифрование 16 20.01.2010 18:39
"Project Project1.exe raised class EConvertError with message'''is not a valid floating point value'." Doz1metr Помощь студентам 9 24.06.2009 19:06
raised exception class EIdSocketError with message' Socket Error # 10022 Invalid argument eldar Работа с сетью в Delphi 16 08.08.2008 23:49