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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2012, 22:07   #1
Egor2
 
Регистрация: 21.03.2011
Сообщений: 7
По умолчанию list index out of bounds 0 при обращении к процедуре

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    RadioGroup1: TRadioGroup;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
    procedure GenerateNew;
    procedure GenerateResult;
    procedure GenerateLost;
   end;

  const
 Q = 'Вопрос ';
 O_k = 'Правильно';
 _of = ' из ';
 win1 = 'Вы успешно прошли тест';
 win2 = 'Поздравляем';
 lost2 = 'Неверно';
 lost1 = 'Вы не прошли тест';

var
  Form1: TForm1;
  s: string;
  n: integer;
  num:integer;
  ri:integer;

implementation

{$R *.dfm}
  procedure TForm1.GenerateNew;
  var k: String;
 begin
   begin
   inc(num);
   label1.Caption:= Q+inttostr(num)+_of+inttostr(N);
   readln(k); label2.Caption:= k;
   readln(k); RadioGroup1.Items.Strings[0]:= k;
   readln(k); RadioGroup1.Items.Strings[1]:= k;
   readln(k); RadioGroup1.Items.Strings[2]:= k;
   readln(k); RadioGroup1.Items.Strings[3]:= k;
   RadioGroup1.Buttons[ri].Checked:= false;
   readln(ri);
  end
 end;

  procedure TForm1.GenerateResult;
  begin
   label1.Caption:= win2;
   label2.Caption:= win1;
   label3.Visible:= false;
   button1.Visible:= false;
   radiogroup1.Visible:= false;
  end;

  procedure TForm1.Button2Click(Sender: TObject);
begin
closefile(input);
form1.Close;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 s:= 'e:\test\text123.txt';
assignfile (input,s);
readln(n);
     if (N>0) then
   GenerateNew
  else
   begin
    closefile(input);
    form1.Close
   end;
end;

procedure TForm1.GenerateLost;
  begin
   label1.Caption:= lost2;
   label2.Caption:= lost1;
   label3.Visible:= false;
   button1.Visible:= false;
   radiogroup1.Visible:= false;
  end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 If (RadioGroup1.Buttons[ri].Checked) and (num<N) then
 begin
  label3.Caption:= Q+inttostr(num)+' - '+O_k;
  GenerateNew;
 end

  else
   if (num=N) and (RadioGroup1.Buttons[ri].Checked) then
    GenerateResult

     else
      if (not RadioGroup1.Buttons[ri].Checked) then
       GenerateLost;
end;


end.
выделяет строку GenerateNew
Код:
begin
 s:= 'e:\test\text123.txt';
assignfile (input,s);
readln(n);
     if (N>0) then
   GenerateNew
  else
   begin
    closefile(input);
    form1.Close
   end;
Egor2 вне форума Ответить с цитированием
Старый 04.05.2012, 22:22   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
выделяет строку GenerateNew
Не удивительно.
Цитата:
RadioGroup1.Buttons[ri].Checked:= false;
Чему ri на этой строке равно, когда выполняется считка из файла?
Может ты местами попутал, и нужно так:
Код:
   
   readln(ri);
RadioGroup1.Buttons[ri].Checked:= false;
I'm learning to live...

Последний раз редактировалось Stilet; 04.05.2012 в 22:24.
Stilet вне форума Ответить с цитированием
Старый 04.05.2012, 22:48   #3
Egor2
 
Регистрация: 21.03.2011
Сообщений: 7
По умолчанию

Нет, проблему не решило

overloaded procedures must be marked with the 'overload' directive
вообщем он начал вот так ругаться

Цитата:
Сообщение от Egor2 Посмотреть сообщение
overloaded procedures must be marked with the 'overload' directive
вообщем он начал вот так ругаться
объявлено в паблике

Последний раз редактировалось Stilet; 05.05.2012 в 12:14.
Egor2 вне форума Ответить с цитированием
Старый 04.05.2012, 23:14   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Имхо, вы использовали имя процедуры 2 раза или задали такое имя, которое уже использовано в других юнитах. Покажите весь код, может вы что-то еще поменяли по сравнению с выложенным кодом?

Кстати, свое сообщение можно редактировать 24 часа с момента опубликования
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 04.05.2012, 23:16   #5
Egor2
 
Регистрация: 21.03.2011
Сообщений: 7
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Имхо, вы использовали имя процедуры 2 раза или задали такое имя, которое уже использовано в других юнитах. Покажите весь код, может вы что-то еще поменяли по сравнению с выложенным кодом?
Только зашел отписаться! два раза объявил просто)
Egor2 вне форума Ответить с цитированием
Старый 04.05.2012, 23:37   #6
Egor2
 
Регистрация: 21.03.2011
Сообщений: 7
По умолчанию

Проблему решил-посмеялся.
Я на форме в радиогрупп линии не сделал.)
Egor2 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При поиске возникает ошибка List index out of bounds (-1) Алекссс БД в Delphi 10 22.07.2011 16:40
List index out of bounds (0) waka2ebawer Работа с сетью в Delphi 2 17.02.2011 06:30
List index out of bounds (44) KoBRaAndrey Общие вопросы Delphi 5 11.12.2009 23:03
Ошибка List index out of bounds(0) при использовании запроса AdoQuery ArtInt БД в Delphi 14 15.04.2009 18:35
При запуске ComboBoxEx пишет List index out of bounds -1. dx+ Общие вопросы Delphi 6 12.06.2008 22:32