У меня вопрос два вопроса
1) Как сделать на форме "Вход в чат" как на http://www.chat.by, типа ввод ника и пароля если все совпадает и чат не перезагружен, то открывается Internet Explorer со списком "Список комнат"
2) Можно ли сделать анологичный чат на Delphi чтобы он обращался к серверу получал информацию о списке, сообщениях и т.д.
Delphi и чат в инете
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
-
- Сообщения: 340
- Зарегистрирован: 22 ноя 2004, 19:15
- Откуда: Минск
- Контактная информация:
Просто набрать исходники может и любая обезьяна, а придумать и отладить не каждый человек.
1) с помощью кукисов. или запоминая ИП посетителя.
2) можно.
8)
Про печенье и "Вход в чат" - это не ко мне, я в этом мало разбираюсь.
Вот код программы, общающейся с сервером:
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.
вот. надеюсь, помог.
2) можно.
8)
Про печенье и "Вход в чат" - это не ко мне, я в этом мало разбираюсь.
Вот код программы, общающейся с сервером:
Код: Выделить всё
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;
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.
вот. надеюсь, помог.
-
- Сообщения: 340
- Зарегистрирован: 22 ноя 2004, 19:15
- Откуда: Минск
- Контактная информация:
а за переменная такая
Buff:tbuff;
ошибку выдает
Buff:tbuff;
ошибку выдает
Просто набрать исходники может и любая обезьяна, а придумать и отладить не каждый человек.
-
- Сообщения: 340
- Зарегистрирован: 22 ноя 2004, 19:15
- Откуда: Минск
- Контактная информация:
А не заметил сча исправлю
Не понял как с кукером и айпи мне проверить что ник и пароль совподает
Не понял как с кукером и айпи мне проверить что ник и пароль совподает
Просто набрать исходники может и любая обезьяна, а придумать и отладить не каждый человек.
-
- Сообщения: 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;
получается на половину идут офигеные пробелы
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;
получается на половину идут офигеные пробелы
Просто набрать исходники может и любая обезьяна, а придумать и отладить не каждый человек.