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
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
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
Bo mi nikt nie odpowiada
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" :-/
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
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ć??
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>
Daj lepiej kawałek kodu, w którym odwołujesz się do memo.lines[coś tam]
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.
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
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).