List index out of bonus(0)

0

Robie chata w Delphi 7 i wszystko działa ale wyskakuje mi błąd "List index out of bonus(0)"Jak zrobić aby nie wyskakiwał?? nie moge znaleŹć w Faq, albo napiszcie albo podajcie link.

Z góry THX

0

Robie chata w Delphi 7 i wszystko działa ale wyskakuje mi błąd "List index out of bonus(0)"Jak zrobić aby nie wyskakiwał?? nie moge znaleŹć w Faq, albo napiszcie albo podajcie link.

Z góry THX

Po co piszesz 2 takie same tematy
http://4programmers.net/Forum/viewtopic.php?id=56477

0

Bo mi nikt nie odpowiada

0

Odwołujesz się do elementu listy, który nie istnieje. Tamten post został skasowany - i nie pisz 2 razy tego samego topica "bo ci nikt nie odpowiada" :-/

0

Bo mi nikt nie odpowiada

to napisz jak to robisz i w jakim komponencie listbox czy listview etc to łatwiej będzie ci pomóc

0

robie w memo

Tworze form1 clientsocket1 i serversocket1 memo1 button1 edit1

edit1- tekst do wysłania
label1- nick
memo1- czat np.
zosia: cze
marek: cze

i pisze tak

procedure TForm1.Button1Click(Sender: TObject);
if clientsocket1.Active= true then begin
clientsocket1.socket.SendText(label1.Caption + ': ' + edit1.text);
memo1.Lines.Add(label1.Caption + ': ' + edit1.text);
edit1.Text:= '';
end else
serversocket1.Socket.Connections[0].sendtext(label1.Caption + ': ' + edit3.text);
memo1.Lines.Add(label6.Caption + ': ' + edit3.text);
edit3.Text:= '';
end;

Gdy kompiluje wszystko o.k
server może wysyłać normalnie bez błędu ale klient z błędem "List index out of bonus(0)"
co zrobić??

0

Czego tak dziwnie piszesz :

 if clientsocket1.Active= true then... 

? Nie wystarczy if clientsocket1.Active then....

?

Poza tym, mógłbyś uruchomić swój program ze środowiska, to byś wiedział, w którym miejscu jest coś nie tak, bo na moje oko to wszystko jest okej w tym kodzie, co napisałeś.

//DOPISANe
I daj se spokój z tym Index out of <b>bonus</b>
0

Daj lepiej kawałek kodu, w którym odwołujesz się do memo.lines[coś tam]

0

To nie powinno mieć znaczenia chyba, ale może masz memo1 readOnly na true.
Jeśli tak, to spróbuj przed dopisaniem linii do memo dać readOnly na false.

0

i nie pisz "List index out of bonus" tylko "List index out of bounds" jak już. sprawdź dokładnie
a poza tym pominąłeś begin. nie pisz:

procedure TForm1.Button1Click(Sender: TObject);
if clientsocket1.Active= true then begin
clientsocket1.socket.SendText(label1.Caption + ': ' + edit1.text);
memo1.Lines.Add(label1.Caption + ': ' + edit1.text);
edit1.Text:= '';
end else
serversocket1.Socket.Connections[0].sendtext(label1.Caption + ': ' + edit3.text);
memo1.Lines.Add(label6.Caption + ': ' + edit3.text);
edit3.Text:= '';
end;

tylko

procedure TForm1.Button1Click(Sender: TObject);
  if clientsocket1.Active then begin
    clientsocket1.socket.SendText(label1.Caption + ': ' + edit1.text);
    memo1.Lines.Add(label1.Caption + ': ' + edit1.text);
    edit1.Text:= '';
  end else begin
    serversocket1.Socket.Connections[0].sendtext(label1.Caption + ': ' + edit3.text);
    memo1.Lines.Add(label6.Caption + ': ' + edit3.text);
    edit3.Text:= '';
  end;
end;

albo najlepiej sprawdź czy sockety są aktywne bo sprawdzasz tylko czy client jest aktywny a jeśli server jest nieaktywny to nie można się odwołać do Connections[0], ale raczej błąd jest tam gdzie jest odwołanie do memo1.Lines.Strings[costam];
napisz tak:

procedure TForm1.Button1Click(Sender: TObject);
  if clientsocket1.Active then begin
    clientsocket1.socket.SendText(label1.Caption + ': ' + edit1.text);
    memo1.Lines.Add(label1.Caption + ': ' + edit1.text);
    edit1.Text:= '';
  end else if serversocket1.Active then begin
    serversocket1.Socket.Connections[0].sendtext(label1.Caption + ': ' + edit3.text);
    memo1.Lines.Add(label6.Caption + ': ' + edit3.text);
    edit3.Text:= '';
  end else
   ShowMessage('Sockety nie są gotowe');
end;

PS wartość readonly jest tylko do tego że user nie może nic do memo wpisywać a program normalnie może z niego korzystać więc nie ma to nic wspólnego

0

Moim zdaniem, błąd może być w tym fragmencie:

serversocket1.Socket.Connections[0].sendtext();

bo na moje oko :) nieaktywny klient wcale nie jest równy aktywnemu serwerowi. A nawet jeśli klient nieaktywny, a serwer aktywny, to do serwera wcale nie musi być podłączony żaden klient :) więc przed odwołaniem się do właściwości Connections sprawdź liczbę połączeń (nie pamiętam jaka była nazwa właściwości).

1 użytkowników online, w tym zalogowanych: 0, gości: 1