0 / 0 / 0
Регистрация: 30.11.2010
Сообщений: 8
1

ошибка при запуске

01.12.2010, 18:43. Показов 1051. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, задание такое: сделать тест.
В нем 18 вопросов,которые берутся из текстового файла.
Ответы с баллами отделены тире, при запуске программы все хроошои идет,а после 17 вопроса выползает вот такое....( приложены скриншоты,где можно увидеть проблему)
что делать не пойму(((
может у кого глаз свежий,сразу увидите,помогите плиз...

вот код программы

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    GroupBox1: TGroupBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
var f:textfile;
i:byte;
ball:array[0..2] of byte;
sum,n:integer;
stroka,vopros,otvet:string;
 
procedure razdel(s:string;var v:string;var b:byte);
var k:byte;
sub,t:string;
begin
sub:=s;
k:=pos('-',sub);
sub[k]:=' ';
  while  pos('-',sub)<>0  do
    begin
    k:=pos('-',sub);
    sub[k]:=' ';
    end;
v:=trim(copy(s,1,k-1));
t:=trim(copy(s,k+1,length(s)-k));
b:=strtoint(t);
end;
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
assignfile(f,'test.txt');
reset(f);
readln(f,vopros);
label1.Caption:=vopros;
readln(f,stroka);
i:=1;
  repeat
    razdel(stroka,otvet,ball[i]);
    (form1.Components[i+1] as tradiobutton).visible:=true;
    (form1.Components[i+1] as tradiobutton).Caption :=otvet;
    i:=i+1;
    readln(f,stroka);
  until ansilowercase(copy(stroka,1,6))='вопрос';
sum:=0;
n:=1;
button2.Enabled:=false;
end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
var k:byte;
begin
  for k:=1 to i-1 do
    begin
      if (form1.Components[k+1] as tradiobutton).Checked then sum :=sum+ball[k];
      (form1.Components[k+1] as tradiobutton).Visible:=false;
    end;
  if not(eof(f)) then
    begin
    label1.caption:=stroka;
    n:=n+1;
    readln(f,stroka);
    i:=1;
  repeat
    razdel(stroka,otvet,ball[i]);
    (form1.Components[i+1] as tradiobutton).visible:=true;
    (form1.Components[i+1] as tradiobutton).Caption :=otvet;
    i:=i+1;
    readln(f,stroka);
  until (ansilowercase(copy(stroka,1,6))='вопрос') or eof(f);
end
  else
    begin
    label1.Caption:='Тестирование окончено, нажмите Результат';
    groupbox1.Visible:=false;
    button1.enabled:=false;
    button2.Enabled :=true;
    end;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var otmetka:byte;
begin
otmetka:=round(sum);
showmessage('Вы получили отметку '+inttostr(otmetka)) ;
close;
end;
 
end.
Миниатюры
ошибка при запуске   ошибка при запуске  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.12.2010, 18:43
Ответы с готовыми решениями:

ошибка при запуске Delphi
Программа выдает ошибку при запуске программы -...

Ошибка при запуске программы
Написал прогу. На компе компилируется, запускается с .exe нормально. Но когда закинул на флешку,...

Ошибка при запуске проекта
При запуске проекта выдает ошибку:debugger kernel bordbk70.dll is missing or not registered. ...

ошибка при запуске программы
подскажите что делать!!? я уже несколько раз пробовал переустановить Delphi 7 и ни чего не...

5
53 / 52 / 22
Регистрация: 29.11.2010
Сообщений: 143
01.12.2010, 20:34 2
..Выложи сам файл с вопросами, судя по всему у тебя пишется в не существующий индекс строки.
0
0 / 0 / 0
Регистрация: 30.11.2010
Сообщений: 8
01.12.2010, 21:25  [ТС] 3
загрузила...так странно то,что удаляю если 18 вопрос,то туже самую ошибку выдает после 16
Вложения
Тип файла: txt test.txt (2.8 Кб, 17 просмотров)
0
53 / 52 / 22
Регистрация: 29.11.2010
Сообщений: 143
01.12.2010, 22:42 4
У тебя как доходит до последнего вопроса получает пустую строку и пытается получить следующий вопрос, по этому ошибка и падает. Приходит пустая строка, ты пытаешься получить позицию символа в пустой строке, из-за этого и падает ошибка.
Поменя функцию в обработчике на кнопке 1 как указано ниже
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
procedure TForm1.Button1Click(Sender: TObject);
var k:byte;
begin
  for k:=1 to i-1 do
    begin
      if (form1.Components[k+1] as tradiobutton).Checked then sum :=sum+ball[k];
      (form1.Components[k+1] as tradiobutton).Visible:=false;
    end;
  if not(eof(f)) then
    begin
    label1.caption:=stroka;
    n:=n+1;
    readln(f,stroka);
    i:=1;
  if stroka='' then
    begin
      label1.Caption:='Тестирование окончено, нажмите Результат';
      groupbox1.Visible:=false;
      button1.enabled:=false;
      button2.Enabled :=true;
    end
  else
    repeat
     razdel(stroka,otvet,ball[i]);
      (form1.Components[i+1] as tradiobutton).visible:=true;
      (form1.Components[i+1] as tradiobutton).Caption :=otvet;
      i:=i+1;
      readln(f,stroka);
    until (ansilowercase(copy(stroka,1,6))='вопрос') or eof(f) or (Trim(stroka)='');
end
  else
    begin
    label1.Caption:='Тестирование окончено, нажмите Результат';
    groupbox1.Visible:=false;
    button1.enabled:=false;
    button2.Enabled :=true;
    end;
end;
1
0 / 0 / 0
Регистрация: 30.11.2010
Сообщений: 8
02.12.2010, 04:51  [ТС] 5
огромное Вам спасибо!!!!!!!!
0
53 / 52 / 22
Регистрация: 29.11.2010
Сообщений: 143
02.12.2010, 07:52 6
..Во избежания подобных ошибок, тебе лучше следовало бы сначала считать все вопросы в память, а уж потом работать с ними.
..Да и кстати, для спасибо есть отдельная кнопка под каждым постом
0
02.12.2010, 07:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.12.2010, 07:52
Помогаю со студенческими работами здесь

Ошибка при запуске проекта
Здравствуйте при запуске приложения выдается ошибка File not found acDBGrid.dcu что делать? ...

Ошибка при запуске в Win7
Установил Дельфи. После запуска выдает это: Unable to rename 'C:Program...

Ошибка при запуске установки Embarcadero
Всем привет, горю желанием установить себе Embarcadero Rad Studio 2010 При запуске установки...

SynEdit - Ошибка при запуске проекта
Доброго дня, вечера, утра, ночи... Я тут на днях скачал компонент SynEdit для Delphi XE5...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru