Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чем воспользоваться для авторизации, idHTTP vs WebBrowser 
:(
    Опции темы
BEST13
Дата 14.2.2012, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 11.4.2008
Где: Ukraine

Репутация: нет
Всего: нет



Стоит задача собрать статистику из сетевых принтеров, HP и Canon
C НР все, ок запрос Get в IdHTTP и  парсим.  
А вот в кенонах, страничку инфо не получить сразу, попадаю на страничку с выбором адимн, или просто пользователь.  Для пользователя предлагается ввести имя, но это поле можно оставить пустым и нажать на кнопку, попадаем  в меню откуда нужно перейти на статистику...и её уже нужно парсить. 
Какой компонент будет удобней для этого использовать? И как в нем пройти авторизацию?
Вот страницы:
1. Логин
Код


<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<title>Remote UI<Top Page>:  : 192.168.17.51</title>
<script language="JavaScript">
<!--
function refresh() 
{
  document.location = '_top.html';
}

function login(){
  if (document.Login.num.value=="0"){
  if (document.Login.a0x50c9.value!="3"){
  if (document.Login.a0x50d2.value!="1" ){
  if (document.Login.login_mode[0].checked == true){
  var stralp=document.Login.pwd;
for(i=0;i<stralp.value.length;i++){
n = stralp.value.charCodeAt(i);
if( n<32 || n>126 ){
alert("The types of characters entered are incorrect.");
stralp.focus();
  return false;
}
  }
  }
  }
  }
  }
  document.Login.method="post";
  document.Login.action="login.cgi";
  window.document.forms[0].submit();
}
function lang_change(){
document.Login.method="post";
document.Login.action="_top.html";
document.Login.submit();
}

// -->
</script>
</head>

<body background="top_bk.gif">

<form name="Login" >
<input type="hidden" name="a0x50d2" value="0">
<input type="hidden" name="a0x50c9" value="0">
<input type="hidden" name="num" value="0">
<center>
<p><a name="page_top"></a>
<table border="0" cellpadding="1" cellspacing="6" width="80%">
<tr height="50">
<td align="right" height="50">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center"><font color="#000066" size="4"><b>
<img src="en/top_title.gif" width="471" height="54" naturalsizeflag="3" align="BOTTOM"></b></font></td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="center">
<table border="0" cellpadding="2" cellspacing="5" width="100%">
<tr height="20">
<td height="20" bgcolor="#000099" width="100%">
<table border="0" cellspacing="5" cellpadding="0" width="100%" bgcolor="#000099">
<tr height="20">
<td width="1%" align="center" nowrap height="20" bgcolor="white">
<img src="img010.gif" align="TOP" hspace="20" naturalsizeflag="3"></td>
<td height="20" bgcolor="#eeeeee">
<table border="0" cellpadding="1" cellspacing="5" width="100%">
<tr>
<td colspan="3" nowrap><font size="2">Remote UI<br>
Copyright CANON INC. 2008<br>
All Rights Reserved</font></td>
</tr>
<tr>
<td colspan="3">
<hr>
</td>
</tr>
<tr>
<td nowrap><font size="1">Device Name:</font></td>  
<td nowrap></td>
<td nowrap width="90%"></td>
</tr>
<tr>
<td nowrap><font size="1">Product Name:</font></td>  
<td nowrap>iR1020</td>
<td nowrap width="90%"></td>
</tr>
<tr>
<td nowrap><font size="1">Location:</font></td>  
<td nowrap></td>
<td nowrap width="90%"></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="100%">
<table width="100%" border="1" cellspacing="0" cellpadding="0" height="96">
<tr>
<td width="100%" bgcolor="white">
<table border="0" cellpadding="0" cellspacing="4" width="100%" height="94">

<tr height="26">
<td width="25%" height="26"><b>Printer:</b></td>  
<td width="5%" height="26"><font size="2">
<img src="/sg_ok.gif" border="0" width="18" height="18" naturalsizeflag="3" align="BOTTOM"></font></td>
<td font color="black" height="26"><b>Ready to print.</b></td>
<td width="20%" align="right" height="26">
<a href='javascript:function voi(){}; voi();' onclick='refresh();return false;'>
<img src="bh_updt.gif" alt="Refresh" height="26" width="26" naturalsizeflag="0" align="BOTTOM" border="0"></td>
</tr>

<tr height="26">
<td width="25%" height="26"><b>Scanner:</b></td>  
<td width="5%" height="26"><font size="2"><img src="/sg_ok.gif" border="0" width="18" height="18" naturalsizeflag="3" align="BOTTOM"></font></td>
<td height="26"><font color="black"><b>Ready to scan.</b></font></td>
<td width="20%" height="26">

</td>
</tr>

</table>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="center" width="100%">
<table border="1" cellpadding="1" cellspacing="1" width="100%">
<tr>
<td bgcolor="#ffffcc" align="center" width="100%">
<table border="0" cellspacing="3" cellpadding="0" width="100%" bgcolor="#ffffcc">
<tr>
<td colspan="3"><img src="dot_trans.gif" height="1" width="96%" naturalsizeflag="0" align="BOTTOM"></td>
</tr>
<tr>
<td width="1%"></td>
<td>Display Language:</td>  
<td align="right">
<div align="left">
<select name="lang" size="1" onChange="lang_change()">
<option value="1" >Japanese</option>
<option value="0" selected>English</option>
<option value="2" >French</option>
<option value="3" >Spanish</option>
<option value="5" >Italian</option>
<option value="4" >German</option>
<option value="25" >Chinese(Simplified)</option>
<option value="27" >Korean</option>
<option value="26" >Chinese(Traditional)</option>
</select></div>
</td>
</tr>
<tr>
<td width="1%"></td>
<td colspan="2">
<hr>
</td>
</tr>
<tr>
<td colspan="3"><img src="dot_trans.gif" height="1" width="96%" naturalsizeflag="0" align="BOTTOM"></td>
</tr>
<tr>

<script language="JavaScript">
<!--
if(document.Login.a0x50d2.value=="1" && document.Login.num.value=="1"){
document.write('<td colspan="3">Enter User ID and Password.</td>');
}else if(document.Login.a0x50c9.value=="3" && document.Login.num.value=="2"){
document.write('<td colspan="3">Enter Department ID and Password.</td>');
}else {
document.write('<td colspan="3">Select a logon mode.</td>');
document.write('</tr><tr><td width="1%"></td>');
document.write('<td colspan="2"><input type="radio" value="admin" name="login_mode"checked><b>Administrator Mode</b><br>');
document.write("<font size=\"2\">Enables administrative control for the device and print jobs.</font></td>");
}
// -->
</script>

</tr>
<script language="JavaScript">
<!--
if(document.Login.a0x50d2.value=="1" && document.Login.num.value=="1"){
document.write('<input type="hidden" value="sdl_user" name="login_mode">');
document.write('<tr height="4"><td colspan="2" height="4"></td></tr><tr><td width="1%"></td>');
document.write('<td align="left" valign="top" height="10" nowrap width="20%"><blockquote>User ID:</blockquote></td>');
document.write('<td><input type="text" name="user_name" size="20" maxlength="32"></td>');
}else if(document.Login.a0x50c9.value=="3" && document.Login.num.value=="2"){
document.write('<input type="hidden" value="dep" name="login_mode">');
document.write('<tr height="4"><td colspan="2" height="4"></td></tr><tr><td width="1%"></td>');
document.write('<td align="left" valign="top" height="10" nowrap width="20%"><blockquote>Department ID:</blockquote></td>');
document.write('<td><input type="text" name="user_name" size="20" maxlength="7"></td>');
}else {
document.write('<tr><td width="1%"></td>');
document.write('<td align="left" valign="top" nowrap width="20%"><blockquote>Password: </blockquote></td>');
document.write('<td><input type="password" name="pwd" size="20" maxlength="7"></td>');
}
// -->
</script>

</tr>
<tr>
<td align="right" colspan="3"><img src="dot_trans.gif" height="1" width="96%" naturalsizeflag="0" align="BOTTOM"></td>
</tr>
<tr>
<td width="1%"></td>
<script language="JavaScript">
<!--
if((document.Login.a0x50c9.value=="3" && document.Login.num.value=="2")||(document.Login.a0x50d2.value=="1" && document.Login.num.value=="1")){
document.write('<td colspan="2"></td>');
}else{
document.write('<td colspan="2"><input type="radio" value="user" name="login_mode" checked><b>End-User Mode</b><br>');
document.write('<font size="2">Enables to browse device and job information.<br>');
document.write('</font><font size="2">Enter Document Owner Name to control print jobs of the owner.</font></td>');
}
// -->
</script>

</tr>
<tr>
<td width="1%"></td>
<script language="JavaScript">
<!--
if(document.Login.a0x50d2.value=="1" && document.Login.num.value=="1"){
document.write('<td align="left" valign="top" nowrap width="20%"><blockquote>Password: </blockquote></td>');
document.write('<td><input type="password" name="pwd" size="20" maxlength="32"></td>');
}else if(document.Login.a0x50c9.value=="3" && document.Login.num.value=="2"){
document.write('<td align="left" valign="top" nowrap width="20%"><blockquote>Password: </blockquote></td>');
document.write('<td><input type="password" name="pwd" size="20" maxlength="7"></td>');
}else {
document.write('<td align="left" valign="top" nowrap width="20%"><blockquote>Owner Name: </blockquote></td>');
document.write('<td><input type="text" name="user_name" size="20" maxlength="32"></td>');
}
// -->
</script>

</tr>
<tr>
<td colspan="3"><img src="dot_trans.gif" height="1" width="96%" naturalsizeflag="0" align="BOTTOM"></td>
</tr>
<tr>
<td width="1%"></td>
<td colspan="2">
<hr>
</td>
</tr>
<tr>
<td width="1%"></td>
<td></td>
<td align="right"><a href='javascript:function voi(){}; voi();' onclick='login();return false;'>
<img src="en/btn_ok.gif" border="0" hspace="2" width="80" height="24" vspace="2" alt="OK" naturalsizeflag="0" align="BOTTOM"></a></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="center"><img src="top_canon.gif" width="123" height="33" naturalsizeflag="3" align="BOTTOM"></td>
</tr>
</table>
<br>
</form>
</center>
</body>
</html>


2. Страница с меню 
Код

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<title>Remote UI<Device>:  : 192.168.17.51</title>
</head>
<frameset cols="175,*" bordercolor="white" border="0" framespacing="0" frameborder="NO">
<frame src="index01_01.html" name="Menu" scrolling="NO" noresize>
<frame src="devstats.html" name="body" noresize>
<noframes>
<body bgcolor="white">
</body>
</noframes>
</frameset>
</html>


Фрейм меню:
Код

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<title>Remote UI</title>
</head>
<body link="#0033ff" vlink="#0033ff" alink="red" bgcolor="#ccccff" background="mbg.gif">
<table border="0" cellpadding="0" cellspacing="0" height="100%" width="152">
<tr height="150">
<td align="center">
<a href="_top.html" target="_top"><img src="en/mbl_tt_n.gif" border="0" alt="To Top page"></a>
<br>
<table border="0" cellpadding="0" cellspacing="4" width="100%">
<tr>
<td align="center"><font size="2"><b>
End-User Mode
</b></font></td>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td><img height="20" width="1" src="dot_trans.gif"></td>
</tr>
</table>
<img src="en/mbl_dm_s.gif" border="0" alt="Device">
<table border="0" cellpadding="2" cellspacing="0" width="120">
<tr>
<td valign="top" width="3%"><img height="12" width="12" src="mbs_s.gif"></td>
<td><a href="_devmgr.html" target="_top"><font size="2"><b>Status </b></font></a></td>
</tr>
<tr>
<td valign="top" width="3%"><img height="12" width="12" src="mbs_n.gif"></td>
<td><a href="_info.html" target="_top"><font size="2"><b>Information</b></font></a></td>
</tr>
<tr>
<td valign="top" width="3%"><img height="12" width="12" src="mbs_n.gif"></td>
<td><a href="_feat.html" target="_top"><font size="2"><b>Features </b></font></a></td>
</tr>
<tr>
<td valign="top" width="3%"><img height="12" width="12" src="mbs_n.gif"></td>
<td><a href="_net.html" target="_top"><font size="2"><b>Network </b></font></a></td>
</tr>
<tr>
<td valign="top" width="3%"><img height="12" width="12" src="mbs_n.gif"></td>
<td><a href="_counter.html" target="_top"><font size="2"><b>Counter Check</b></font></a></td>
</tr>
</table>

<a href="_job_lbp.html" target="_top"><img src="en/mbl_jm_n.gif" border="0" alt="Job Status"></a><br>


<a href="_system.html" target="_top"><img src="en/mbl_us_n.gif" border="0" alt="Additional Functions"></a><br>
<br><br>
<table border="0" cellpadding="2" cellspacing="0" width="120">
<tr><td valign="top" width="3%"><img height="12" width="12" src="bm_0.gif">
<a href="mailto:"><font size="2">Mail to Administrator</font></a></td></tr>
</table>
</td>
</tr>
<tr>
<td colspan="3" align="center" valign="bottom"></td>
</tr>
</table>
</body>
</html>


PM MAIL ICQ GTalk   Вверх
MetalFan
Дата 14.2.2012, 19:24 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 14
Всего: 128



BEST13, что толку выкладывать тут коды страниц? 
Посмотри, что шлет браузер, когда через него авторизуешься и на страницу нужную выходишь.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Mifody
Дата 14.2.2012, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 5.8.2008

Репутация: 2
Всего: 2



насчет авторизации, пофиг чем пользоваться. Если делать хорошо - получите результат на любых компонентах/классах.
Насчет информации - можно и этот форум почитать, возьмите любую авторизацию для любого сайта - принцип везде правктически одинаков
PM MAIL WWW   Вверх
BEST13
Дата 15.2.2012, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 11.4.2008
Где: Ukraine

Репутация: нет
Всего: нет



Цитата(MetalFan @  14.2.2012,  19:24 Найти цитируемый пост)

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

Так использовал, утилиту которую ты советовал на форуме, Fiddler 
После нажатии кнопки, прога показала всего один Post запрос /logon.cgi, а за ним 3 Get: к странице _devmgr.html , /index01_01.html, /devstats.html.

Решил, попробовать через idHTTP  
Еще заметил, в куки написано было iR=1082939039, поэтому подключил IdCookieManager.
Но выкидывает ошибку : Connection closed Gracefully; 

Fiddler не видит запросов, с моего приложения, хотя я указал порт прокси, что и написан в настройках fiddler 8888 
Код

procedure TForm1.Button1Click(Sender: TObject);
 var
dump:TStream;
dump_txt,post_date:TStringList;
get_txt,get_url:string;

begin
    dump_txt:=TStringList.Create;
    dump:=TMemoryStream.Create;
    post_date:=TStringList.Create;

    Post_date.Add('a0x50d2=0');
    post_date.add('a0x50c9=0');
    post_date.Add('num=0');
    post_date.Add('lang=0');
    post_date.Add('pwd=');
    post_date.Add('login_mode=user');
    post_date.Add('user_name=');
//try
      IdHTTP1.Get('http://192.168.17.51/_top.html',dump);
      IdHTTP1.Post('http://192.168.17.51/logon.cgi',post_date);
      IdHTTP1.Get('http://192.168.17.51/_devmgr.html',dump);
  //  except
      ShowMessage('Ñåðâåð íå îòâå÷àåò, ìîæåò îòêëþ÷åí èíòåðíåò? Ïåðåçàïóñòèòå ïðîãðàììó.');
      close;
      exit;
 //   end;
    dump.Seek(0, soFromBeginning);
    dump_txt.LoadFromStream(dump);
    dump.Free;
    if Pos('1251',IdHTTP1.Response.ContentType)<>0 then
    begin
      get_txt:=dump_txt.Text;
    end
    else
    begin
        if Pos('charset=windows-1251',dump_txt.Text)<>0 then
        begin
          get_txt:=dump_txt.Text;
        end
        else
        begin
          get_txt:=Utf8ToAnsi(dump_txt.Text);
        end;
    end;
    dump_txt.Free;

Memo1.Lines.Add(get_txt);
    
PM MAIL ICQ GTalk   Вверх
MetalFan
Дата 15.2.2012, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 14
Всего: 128



Цитата(BEST13 @  15.2.2012,  11:19 Найти цитируемый пост)
Fiddler не видит запросов, с моего приложения
 Ну так надо указать локальный прокси для индейцев)



--------------------
There are always someone smarter than you...
PM MAIL   Вверх
BEST13
Дата 15.2.2012, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 11.4.2008
Где: Ukraine

Репутация: нет
Всего: нет



Цитата(MetalFan @  15.2.2012,  12:06 Найти цитируемый пост)

 Ну так надо указать локальный прокси для индейцев)

А где его можно глянуть, а то в проге кроме, как порта больше ничего нет, или я не то смотрю. Смотрел в опциях Fiddlera 
PM MAIL ICQ GTalk   Вверх
MetalFan
Дата 15.2.2012, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 14
Всего: 128



BEST13, Fiddler работает как локальный прокси. Надо индейцев "натравить" на этот прокси, чтобы с пом. Fiddler'а смотреть, что они шлют. см. IdHTTP.ProxyParams


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
BEST13
Дата 15.2.2012, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 11.4.2008
Где: Ukraine

Репутация: нет
Всего: нет



MetalFan,  Ага, разобрался....
Вот что браузер шлет:
Код

a0x50d2=0&a0x50c9=0&num=0&lang=0&pwd=&login_mode=user&user_name=
  
Вот что приложение:
Код

a0x50d2=0&a0x50c9=0&num=0&lang=0&pwd=&login_mode=user&user_name=&


Вот IdHTTP1.ResponseText после пост запроса:
Код

HTTP/1.0 302 Moved Temporarily


После Get запроса:
Код

HTTP/1.0 200 OK


И я не совсем уверен мне в Гет запросе нужно обращаться к какой странице?
Той же куда скрипт посылаю? Или к той куда уже после авторизации попадаю?
Я делаю так:
Код

IdHTTP1.Post('http://192.168.17.51/_top.html',post_date);
 Memo1.Lines.Add(IdHTTP1.ResponseText);
IdHTTP1.Get('http://192.168.17.51/_devmgr.html',dump);


Вот что в мемо попадает, когда все запросы отработают:
Код

HTTP/1.0 302 Moved Temporarily
HTTP/1.0 200 OK
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<title>Remote UI</title>
</head>
<body>
<center>
<table border="4" cellpadding="0" cellspacing="2" width="80%">
<tr>
<td align="center" valign="middle" bgcolor="#ffff99">
<p><img src="ms_error.gif" width="65" height="65"></p>
<p><b>User information is disabled.</b><br>
This operation cannot be accepted. User certification is invalid or date expired.<br>
Update page.<br>
<a href="_top.html" target="_top"><img height="24" width="80" border=0 src="btn_ok.gif" vspace="5"></a><br>
</td>
</tr>
</table>
</center>
</body>
</html>


То есть, опять не авторизирована страница.

Fidler фиксирует аж 15 пост запрос ....из моего приложения.

А браузер после нажатия на кнопку ведет, себя так:
Код

POST /login.cgi HTTP/1.1
GET /_devmgr.html HTTP/1.1 страница
GET /index01_01.html HTTP/1.1 фрейм1
GET /devstats.html HTTP/1.1 фрейм2
.... куча картинок
  
И плюс во всех запросах от браузера  есть куки..., а приложении моём их нет, хоть я и подключил куки менеджер  





Это сообщение отредактировал(а) BEST13 - 15.2.2012, 14:39
PM MAIL ICQ GTalk   Вверх
MetalFan
Дата 17.2.2012, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 14
Всего: 128



Цитата(BEST13 @  15.2.2012,  14:37 Найти цитируемый пост)
а приложении моём их нет

хм. в общем случае вообще нет необходимости добавлять и подключать куки-менеджер. Он создастся автоматически самим IdHTTP, если включено св-во AllowCookies.

Так же попробуй переделать формирование параметров со стринглиста на TIdMultipartFormData (по-моему  как-то так называется).

Ну и советую попробовать обновиться до самой свежей версии индейцев... если используется не последняя.

Это сообщение отредактировал(а) MetalFan - 17.2.2012, 14:14


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
BEST13
Дата 17.2.2012, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 11.4.2008
Где: Ukraine

Репутация: нет
Всего: нет



Цитата(MetalFan @  17.2.2012,  14:09 Найти цитируемый пост)
хм. в общем случае вообще нет необходимости добавлять и подключать куки-менеджер. Он создастся автоматически самим IdHTTP, если включено св-во AllowCookies.

Так же попробуй переделать формирование параметров со стринглиста на TIdMultipartFormData (по-моему  как-то так называется).

Ну и советую попробовать обновиться до самой свежей версии индейцев... если используется не последняя.

ОК, спасибо... попробую. правда, только в понедельник будет возможность... 
PM MAIL ICQ GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0913 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.