![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Помогите разобраться где я ошибся. Пытаюсь сделать бан лист для чата. Делал через процедуру работал через раз, а перешел на функцию вообще не работает. Если по имени то находит, а по Host`у уже не ищет. Или может какой пример есть по интересней чем моё "творчество"...
![]() Код:
Function CheckBan (Status: Integer; Host, Name: String):boolean; var i, j: integer; begin if Status = 2 then begin if Name<>'' then begin for I := 0 to Form4.ListBox2.Count-1 do begin j:= AnsiPos(Name, Form4.ListBox2.Items[i]); if j>0 then begin //отладка Form1.ChatMemo.Lines.Add(Form4.ListBox2.Items[i]+ ' : ' +Name); UserMas[i].ban:=True; //Form1.ServerSocket.Socket.Connections[i].Close; //Form1.ServerSocket.Socket.Connections[i].SendText('7'); //UpdDo:=True; Result:=True; end; end; end else begin if Host<>'' then begin for I := 0 to Form4.ListBox1.Count-1 do begin j:= AnsiPos(Name, Form4.ListBox1.Items[i]); if j>0 then begin //отладка Form1.ChatMemo.Lines.Add(Form4.ListBox1.Items[i]+ ' : ' +Host); UserMas[i].ban:=True; //Form1.ServerSocket.Socket.Connections[i].Close; //Form1.ServerSocket.Socket.Connections[i].SendText('7'); //UpdDo:=True; Result:=True; end; end; end Else Result:=False; Form1.ChatMemo.Lines.Add('WTF?!'); end; end; end; ![]() |
#2
|
|||
|
|||
![]() Строка 30. Должно быть:
Код:
j:= AnsiPos(Host, Form4.ListBox1.Items[i]); |
#3
|
|||
|
|||
![]() А вообще, все можно переписать так:
Код:
function CheckBan(Status : Integer; AStr : String; AList : TStringList) : Boolean; var I : Integer; begin Result := False; If Status <> 2 Then Exit; // не знаю зачем тубе этот статус... For I := 0 to AList.Count-1 Do If AnsiPos(AStr,AList[i]) > 0 Then Begin Result := True; UserMas[i].ban := True; Form1.ChatMemo.Lines.Add(AList[i]+ ' : ' +AStr); Break; End; end; Код:
// Не проверяем результат... CheckBan(2,Name,Form4.ListBox2.Items); // По имени CheckBan(2,Host,Form4.ListBox1.Items); // По хосту Код:
if CheckBan(2,Name,Form4.ListBox2.Items) Or CheckBan(2,Host,Form4.ListBox1.Items) Then Form1.ChatMemo.Lines.Add('User by name ' + Name + ' or by host ' + Host + ' banned.') Else Form1.ChatMemo.Lines.Add('User by name' + Name + ' or by host ' + Host + ' not found.'); |
#4
|
|||
|
|||
![]() Спасибо, буду пробовать. А про 30 строку я вообще молчу, как я мог не заметить...
![]() Последний раз редактировалось Vidoc3000, 29.03.2018 в 05:38. |
#5
|
|||
|
|||
![]() Немного изменил и все заработало!
Код:
function CheckBan(AStr : String; AList : TStrings) : Boolean; overload; ![]() |
#6
|
|||
|
|||
![]() А, ну да, там же TStrings задекларирован, хотя на самом деле лежит TStringList. Можно было просто при вызове сделать каст, но так, наверное, даже лучше...
|