Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2009, 21:51   #1
DeDoK
Форумчанин
 
Аватар для DeDoK
 
Регистрация: 05.11.2007
Сообщений: 392
По умолчанию помогите найти ошибку

вот код
Код:
procedure TMainForm.Button9Click(Sender: TObject);
var
email, pass, TmpStr, post_answer : string;
i,j : integer;
parametr, post,response : TStringList;
begin
parametr := TStringList.Create;
post :=TStringList.Create;
response:=TStringList.Create;
for i:=0 to AllListBox.Items.Count-1 do begin
DivideVK(AllListBox.Items[i],email,pass);
parametr.Add('email='+email);
parametr.Add('pass='+pass);
parametr.Add('expire=');
parametr.Add('vk=1');
response.Text:=IdHttp1.Post('http://login.vk.com/?act=login',parametr);
if Pos('value=',response.Text)>0 then
begin
response.Text := Stringreplace(response.Text,'''',#13,[rfreplaceall,rfignorecase]);
for j := 0 to response.Count-1 do
response[j]:=trim(response[j]);
if response[j]=trim('value=') then
begin
TmpStr:='s='+response[j+1];
ShowMessage(TmpStr);
end;
try
post:=TStringList.Create;
Post.Add('op=slogin');
Post.Add('redirect=1');
Post.Add('expire=0');
post.Add('to=');
post.Add('s='+TmpStr);
IdHTTP1.Post('http://vkontakte.ru/login.php?',post);
post.Free;
post_answer:=IdHTTP1.Get('http://vkontakte.ru/apps.php');
if Pos('class="dataWrap">Легенда - первая настоящая ролевая игра ВКонтакте!</a>',post_answer)>0 then
ValibLegendBox.Items.Add(email+':'+pass);
except
InvalidLegendBox.Items.Add(email+':'+pass);
end;
parametr.Free;
response.Free;
end;
end;
end;
все компилируется, но по нажатию выдает ошибку
List index out of bounds (66)
DeDoK вне форума Ответить с цитированием
Старый 02.12.2009, 22:19   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Цитата:
все компилируется, но по нажатию выдает ошибку
List index out of bounds (66)
А воспользоваться дебагом и посмотреть строку,возбуждающую исключение ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 02.12.2009, 22:27   #3
DeDoK
Форумчанин
 
Аватар для DeDoK
 
Регистрация: 05.11.2007
Сообщений: 392
По умолчанию

если бы умел...а так еще дня три разбираться(((
DeDoK вне форума Ответить с цитированием
Старый 03.12.2009, 00:55   #4
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Если D7 - то вместо того, что б нажимать F9 - жмите постепенно F8
TwiX вне форума Ответить с цитированием
Старый 03.12.2009, 01:06   #5
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

может я и не прав, но вот в этом эпизоде:

Код:
for j := 0 to response.Count-1 do
response[j]:=trim(response[j]);
if response[j]=trim('value=') then...
после for j становится равным response.Count, а затем идет response[j]
т.е. вы обращаетесь к элементу, которого нет (об этом как бы и говорит ошибка)
Voody вне форума Ответить с цитированием
Старый 03.12.2009, 01:25   #6
DeDoK
Форумчанин
 
Аватар для DeDoK
 
Регистрация: 05.11.2007
Сообщений: 392
По умолчанию

слегка поправил
Код:
procedure TMainForm.Button9Click(Sender: TObject);
var
email, pass, TmpStr, post_answer,s : string;
i,j : integer;
parametr, post,response : TStringList;
begin
parametr := TStringList.Create;
post :=TStringList.Create;
response:=TStringList.Create;
for i:=0 to AllListBox.Items.Count-1 do begin
DivideVK(AllListBox.Items[i],email,pass);
parametr.Add('email='+email);
parametr.Add('pass='+pass);
parametr.Add('expire=');
parametr.Add('vk=1');
response.Text:=IdHttp1.Post('http://login.vk.com/?act=login',parametr);
if pos('value=',response[11])>0 then
begin
TmpStr:='s='+Copy(response[11],pos(response[11],'value=')+6,56);
ShowMessage(TmpStr);
end;
end;
try
post:=TStringList.Create;
Post.Add('op=slogin');
Post.Add('redirect=1');
Post.Add('expire=0');
post.Add('to=');
post.Add('s='+TmpStr);
IdHTTP1.Post('http://vkontakte.ru/login.php?',post);
post_answer:=IdHTTP1.Get('http://vkontakte.ru/apps.php');
if Pos('class="dataWrap">Легенда - первая настоящая ролевая игра ВКонтакте!</a>',post_answer)>0 then
ValibLegendBox.Items.Add(email+':'+pass);
except
InvalidLegendBox.Items.Add(email+':'+pass);
end;
parametr.Free;
post.Free;
response.Free;
end;
таже малина. попробовал сниферить. показует что get запроса нет совсем.

Последний раз редактировалось DeDoK; 03.12.2009 в 01:30.
DeDoK вне форума Ответить с цитированием
Старый 03.12.2009, 01:33   #7
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Код:
response.Text:=IdHttp1.Post('http://login.vk.com/?act=login',parametr);
if pos('value=',response[11])>0 then
begin
TmpStr:='s='+Copy(response[11],pos(response[11],'value=')+6,56);
ShowMessage(TmpStr);
end;
может так:
Код:
response.Text:=IdHttp1.Post('http://login.vk.com/?act=login',parametr);
if pos('value=',response.Text)>0 then
begin
TmpStr:='s='+Copy(response.Text,pos(response.Text,'value=')+6,56);
ShowMessage(TmpStr);
end;
??

UPD. еще заметил:
Код:
TmpStr:='s='+Copy(response[11],pos(response[11],'value=')+6,56);
...
post.Add('s='+TmpStr);
итого: post.Add('s=s='+Copy(response[11],pos(response[11],'value=')+6,56));

Последний раз редактировалось Voody; 03.12.2009 в 01:42.
Voody вне форума Ответить с цитированием
Старый 03.12.2009, 02:00   #8
DeDoK
Форумчанин
 
Аватар для DeDoK
 
Регистрация: 05.11.2007
Сообщений: 392
По умолчанию

мне нужно узнать зашел ли я на сайт или нет( если зашел - получить страницу с приложениями. но походу авторизации нет. попробовал так
Код:
procedure TMainForm.Button9Click(Sender: TObject);
var
email, pass, post_answer,s : string;
i : integer;
parametr, post,response : TStringList;
begin
parametr := TStringList.Create;
post :=TStringList.Create;
response:=TStringList.Create;
for i:=0 to AllListBox.Items.Count-1 do begin
DivideVK(AllListBox.Items[i],email,pass);
parametr.Add('email='+email);
parametr.Add('pass='+pass);
parametr.Add('expire=');
parametr.Add('vk=1');
try
response.Text:=IdHttp2.Post('http://login.vk.com/?act=login',parametr);
except
on e : EIDHttpProtocolException do
if e.ErrorCode = 302 then
begin
idhttp2.get(IdHTTP2.Request.Host+idhttp1.response.location);
end;
end;
parametr.Clear;
end;
if pos('value=',response[11])>0 then
begin
end;
try
post:=TStringList.Create;
Post.Add('op=slogin');
Post.Add('redirect=1');
Post.Add('expire=0');
post.Add('to=');
post.Add('s=s='+Copy(response[11],pos(response[11],'value=')+6,56));
s:=IdHTTP2.Post('http://vkontakte.ru/login.php?',post);
if (Pos('<title>В Контакте | Вход</title>',s) <> 0) then ShowMessage('false');
post_answer:=IdHTTP2.Get('http://vkontakte.ru/apps.php');
if Pos('class="dataWrap">Легенда - первая настоящая ролевая игра ВКонтакте!</a>',post_answer)>0 then
ValibLegendBox.Items.Add(email+':'+pass);
except
InvalidLegendBox.Items.Add(email+':'+pass);
end;
parametr.Free;
post.Free;
response.Free;
end;
побарабану(((
DeDoK вне форума Ответить с цитированием
Старый 03.12.2009, 02:10   #9
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Цитата:
Сообщение от DeDoK Посмотреть сообщение
побарабану(((
что за ошибка, не понятно))))
я же не могу увидеть, что вам выдает программа, что вообще происходит. если хотите помощи, то объясняйте подробнее.
ошибка вылазит? что показывает снифер? делаются ли запросы? верны ли запросы? верны ли параметры?
перед самым запросом выведите все параметры в Мемо и посмотрите их значения.


и читайте внимательно, что я пишу))

Код:
if pos('value=',response[11])>0 then
сделайте
Код:
if pos('value=',response.text)>0 then
а это что за параметр:
Код:
post.Add('s=s='+Copy(response[11],pos(response[11],'value=')+6,56));
я же указал вам на ошибку, а не как надо сделать

замените все response[11] на response.text

Последний раз редактировалось Voody; 03.12.2009 в 02:12.
Voody вне форума Ответить с цитированием
Старый 03.12.2009, 02:49   #10
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Авторизация.
Вложения
Тип файла: rar SimpleAuth.rar (7.5 Кб, 19 просмотров)
Lime вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти ошибку! junkie Паскаль, Turbo Pascal, PascalABC.NET 2 03.05.2009 14:22
помогите найти ошибку! Picaso18 Паскаль, Turbo Pascal, PascalABC.NET 3 24.01.2009 15:32
Помогите найти ошибку alex2008ean Паскаль, Turbo Pascal, PascalABC.NET 2 17.12.2008 15:43
Помогите найти ошибку Dmitriy Общие вопросы Delphi 4 01.08.2008 23:32
Помогите найти ошибку N!ckeL Общие вопросы Delphi 9 05.05.2008 14:15