Ошибка в приложении 'List Index out of bounds (0)'

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Аватара пользователя
Oleg_Rus
Сообщения: 335
Зарегистрирован: 16 окт 2006, 09:56
Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
Контактная информация:

Доброго всем времени суток, Господа.

Недавно начал программировать на С++ Builder 6. Пишу чат для локальной сети. Проблема: При отправке сообщения в сеть выдает ошибку 'List Index out of bounds (0)'.

Что это и как его едят? )))

Сразу даю исходники программы:

Код: Выделить всё

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
  ServerSocket1->Active = true;
  Button2->Enabled = false;
  Button4->Enabled = true;
  Memo1->Lines->Add("Сервер создан");
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)
{
  Edit3->Text=ClientSocket1->Host;
  Edit3->Text=ClientSocket1->Address;
  ServerSocket1->Active=true;
  Button2->Enabled=false;
  Button4->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1ClientConnect(TObject *Sender,
      TCustomWinSocket *Socket)
{
  Memo1->Lines->Add("Клиент присоединился");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocket1Connect(TObject *Sender,
      TCustomWinSocket *Socket)
{
  Memo1->Lines->Add("Вы присоединены");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  if (Edit2->Text == "")
  { ShowMessage("Введите ваш ник!");
    return;}
  if (Edit1->Text == "")
  { ShowMessage("Введите сообщение!");
    return;}
  Memo1->Lines->Add(Edit2->Text+": "+Edit1->Text);
  if (ServerSocket1->Active == true)
  { ServerSocket1->Socket->Connections[0]->SendText(Edit2->Text+": "+Edit1->Text);
    Edit1->Text = "";}
  else
  { ClientSocket1->Socket->SendText(Edit2->Text+": "+Edit1->Text);
    Edit1->Text = "";}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
      TCustomWinSocket *Socket)
{
  Memo1->Lines->Add(Socket->ReceiveText());        
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
      TCustomWinSocket *Socket)
{
  Memo1->Lines->Add(Socket->ReceiveText());
}
//---------------------------------------------------------------------------
e-mail: garmayev@yandex.ru
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
azrael
Сообщения: 89
Зарегистрирован: 31 май 2009, 15:30
Контактная информация:

Если не ошибаюсь, ServerSocket1->Active выдаст true даже если Connections ни одного нет, поэтому надо проверять, существует ли Connections[0].
Аватара пользователя
Oleg_Rus
Сообщения: 335
Зарегистрирован: 16 окт 2006, 09:56
Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
Контактная информация:

Azrael, не подскажешь как его можно проверить? Какое свойство за это отвечает и как до него достучаться? )
e-mail: garmayev@yandex.ru
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
azrael
Сообщения: 89
Зарегистрирован: 31 май 2009, 15:30
Контактная информация:

ServerSocket1->Socket->ActiveConnections, проверьте, что больше нуля.
Аватара пользователя
Oleg_Rus
Сообщения: 335
Зарегистрирован: 16 окт 2006, 09:56
Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
Контактная информация:

спс большое
e-mail: garmayev@yandex.ru
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
Ответить