Delphi и чат в инете

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Лелик_1044
Сообщения: 340
Зарегистрирован: 22 ноя 2004, 19:15
Откуда: Минск
Контактная информация:

У меня вопрос два вопроса

1) Как сделать на форме "Вход в чат" как на http://www.chat.by, типа ввод ника и пароля если все совпадает и чат не перезагружен, то открывается Internet Explorer со списком "Список комнат"
2) Можно ли сделать анологичный чат на Delphi чтобы он обращался к серверу получал информацию о списке, сообщениях и т.д.
Просто набрать исходники может и любая обезьяна, а придумать и отладить не каждый человек.
drmist
Сообщения: 33
Зарегистрирован: 03 авг 2004, 22:34

1) с помощью кукисов. или запоминая ИП посетителя.
2) можно.
8) :wink:
Про печенье и "Вход в чат" - это не ко мне, я в этом мало разбираюсь.
Вот код программы, общающейся с сервером:

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

procedure TForm1.ReadURL(const page: string);
var Sess,Url: HINTERNET;
    Buff:tbuff;
    BytesCount:cardinal;
begin
memo1.Clear;
Sess:=InternetOpen('MSIE',INTERNET_OPEN_TYPE_PRECONFIG,nil,nil,0);
if Assigned(Sess) then
begin
  Url:=InternetOpenUrl(Sess, PChar(page), nil, 0, INTERNET_FLAG_RELOAD, 0);

  if Assigned(Url) then
  begin
    FillChar(Buff, SizeOf(Buff), 0);
    repeat
      memo1.text:=memo1.text+Buff;
      FillChar(Buff, SizeOf(Buff), 0);
      InternetReadFile(Url,@Buff,SizeOf(Buff),BytesCount);
    until BytesCount = 0;
    InternetCloseHandle(Url);
  end
  else memo1.lines.add('Не могу открыть ' + page);

InternetCloseHandle(Sess);
end else memo1.lines.add('Ошибка');

end;
const maxbuffsize=1024;
type tbuff=array[1..maxbuffsize] of char;

Не забудь прописать WinInet в uses. В качестве страницы можно указать что-нибудь типа _http://site.ru/script.pl?p=action_a. тип протокола указывать обязательно. Программа считает сурс полученной страницы и выведет его в memo1. можешь проверить на http://www.ya.ru. MSIE - это "тип браузера". чтоб обычные пользователи не ломились со своей Оперой, можешь заменить "MSIE" на что-нибудь рандомое-длинное и вставить в скрипте проверку на этот параметр. как это сделать - опять не ко мне. Приведенный алгоритм работает только под WinXP/2k, так как в других версиях нет библиотеки wininet.dll.
вот. надеюсь, помог.
Лелик_1044
Сообщения: 340
Зарегистрирован: 22 ноя 2004, 19:15
Откуда: Минск
Контактная информация:

а за переменная такая

Buff:tbuff;

ошибку выдает
Просто набрать исходники может и любая обезьяна, а придумать и отладить не каждый человек.
Лелик_1044
Сообщения: 340
Зарегистрирован: 22 ноя 2004, 19:15
Откуда: Минск
Контактная информация:

А не заметил сча исправлю
Не понял как с кукером и айпи мне проверить что ник и пароль совподает
Просто набрать исходники может и любая обезьяна, а придумать и отладить не каждый человек.
Лелик_1044
Сообщения: 340
Зарегистрирован: 22 ноя 2004, 19:15
Откуда: Минск
Контактная информация:

1) Но она же офигено томозит
2) Как из избавиться то | я пытался использовать
следующее

findr, line:string;
ipos: integer;
....
findr:=buff;
while length(FindR)>0 do begin
iPos:=Pos(#10,FindR);
Line:=Copy(FindR,1,iPos-1);
Memo1.Lines.Add(Line);
Delete(FindR,1,Length(Line)+1);
end;

получается на половину идут офигеные пробелы
Просто набрать исходники может и любая обезьяна, а придумать и отладить не каждый человек.
Ответить