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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2012, 19:11   #1
juliashish
 
Регистрация: 11.11.2011
Сообщений: 3
По умолчанию Календарь-ошибка!

при вводе задания в строку выдает ошибку listindex out of bounds (0). Как исправить? помогите пожалуйста! заренее спасибо огромнейшее!

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    MonthCalendar1: TMonthCalendar;
    ListBox1: TListBox;
    ListBox2: TListBox;
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Date1: TDateTime;
  i: Integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
date1 := MonthCalendar1.Date;
i:=0;
  while date1 > StrToDate(ListBox1.Items[i])
  do i:=i+1;
ListBox1.Items.Insert(i,DateToStr(Date1));
ListBox2.Items.Insert(i,Edit1.Text);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ListBox1.Items.SaveToFile('date.txt');
ListBox2.Items.SaveToFile('buis.txt');
end;

end.


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 13.09.2012 в 19:54.
juliashish вне форума Ответить с цитированием
Старый 13.09.2012, 19:33   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

А в листбоксе у Вас значения присутствуют изначально?

Судя по коду, Вы дату втыкаете в Лист по возрастанию, но в изначальном виде ЛистБокс пуст, следовательно обращение к элементу с номером 0 некорректно и вызывает Вашу ошибку. Добавьте проверку на пустоту списка и проверку на конец списка, иначе, когда i>=ListBox1.Items.Count, у Вас будет та же самая ошибка, а не добавление даты в конец списка:

Код:
If ListBox1.Items.Count>0 then begin
   i:=0;
   while (i<ListBox1.Items.Count) do
  If (date1 > StrToDate(ListBox1.Items[i])) then
    i:=i+1
  else
    break;
end;
ListBox1.Items.Insert(i,DateToStr(Date1));
ListBox2.Items.Insert(i,Edit1.Text) ;
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 13.09.2012, 19:42   #3
juliashish
 
Регистрация: 11.11.2011
Сообщений: 3
По умолчанию

спасссссссссссиииииииииииииииииибо! ! вы меня спасли)))
juliashish вне форума Ответить с цитированием
Старый 13.09.2012, 19:58   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

ошибка явно здесь
Цитата:
Код:
  while date1 > StrToDate(ListBox1.Items[i])
и, скорее всего, из-за ошибки в алгоритме/логике работы.

Если ListBox1 пустой - сразу получите такую ошибку, как у Вас.
Если ListBox1 нет строки с датой больше или равно date1 -получите такую ошибку, как у Вас.

ХОТЯ БЫ так попробуйте:
Код:
  i:=0;
  while (i<ListBox1.Count) and ( date1 > StrToDate(ListBox1.Items[i]) )
     do i:=i+1;


УПС. опоздал....
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.09.2012, 20:35   #5
juliashish
 
Регистрация: 11.11.2011
Сообщений: 3
По умолчанию

и вам большое спасибо, за то что уделили внимание)))
juliashish вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Календарь bize Microsoft Office Excel 0 11.07.2012 17:58
Календарь Стелс Общие вопросы Delphi 7 06.12.2011 23:45
календарь xpams Microsoft Office Excel 4 20.10.2011 11:30
Календарь ZvEr_HaCkEr JavaScript, Ajax 3 07.11.2010 03:35
Календарь krikaved Общие вопросы Delphi 2 25.03.2010 22:58