Всем хелоу) собственно такая проблемка, есть функция примерно такого вида: Code: function ololo(const i, j: integer):boolean; begin { мега код } If ololo then Result := True else Result := False; end; есть процедура: Code: procedure ololo1; var z: boolean; begin z:=ololo(i, j); {ЗДЕСЬ НАДО СДЕЛАТЬ ПРОВЕРКУ, ЧТО ВЕРНУЛА ФУНКЦИЯ OLOLO, true or false} end; проверку делал таким образом: Code: if z then { code } else { code2 }; но в таком варианте вылитает ошибка... как проверить...а то программка виснет нафиг, вообще функция находиться в цикле, успевает ли она вернуть значение...мм?) кто что может рассказать мне по этому поводу? P.S. а время то...ппц...
OLOL if .. then .. else - переводиться как: если .. то .. иначе if z then - ЕСЛИ Z ТО If ololo then - ЕСЛИ ololo ТО напиши свои куски кодов полностью - помогу
Что за ошибка, где вылетает, отладчиком пользоваться не учили? Ну и код бы весь увидеть тоже не помешало) О_о
Мне кажется у тебя условие сформировано неправильно. Покажи то что выдает компилятор, даже думаю в интернете или справке можешь найти нужную инфу.
PHP: function ololo(const i, j: integer):boolean; begin { мега код } If ololo then Result := True else Result := False; end; Так это же рекурсия Ты запускаешь ololo первый раз, она вызывает саму себя же: If ololo then а эта проверка опять вызывает саму себя же и т.д. Получаем EStackOverflow или как там.. Нифига..только зачем в примере называть функцию ololo и тут же условие писать ololo? путаница
Ловите, вот функция: Code: function TMainForm.LoginVK(const Mail, Pass: string): boolean; var Cookie, StrPage, StrPage2 : String; //Создаём переменную Post : TStringList; //Создаём переменную Post begin try Post:=TStringList.Create; // первый пост, передаём данные Post.Add('act=login'); Post.Add('success_url='); Post.Add('fail_url='); Post.Add('try_to_login=1'); Post.Add('to='); Post.Add('vk='); Post.Add('email='+Mail); Post.Add('pass='+Pass); Post.Add('expire='); StrPage:=HTTP.Post('http://login.vk.com', Post); //Чистим пост Post.Clear; // тащим куки Cookie:=Copy(StrPage, 351, 56); // второй пост, передаём куки =) Post.Add('s='+Cookie); Post.Add('op=slogin'); Post.Add('redirect=1'); Post.Add('expire=0'); Post.Add('to='); Post.Add('fail_url='); Post.Add('try_to_login=1'); Post.Add('to'); StrPage2:=HTTP.Post('http://vkontakte.ru/login.php', Post); If Pos('window.awayHash', StrPage2) <> 0 Then Result := True Else Result := False; finally end; end; вот процедура: Code: // --- Парсим мыло и пасс с ListBoxAccount --- // procedure TMainForm.OkLetsGo; var z : boolean; i : integer; Mail, Pass, per : string; Tmp : TStrings; begin Tmp := TStrings.Create; Tmp := ListBoxAccount.Items; if ListBoxAccount.Count <> 0 then Begin for I := 0 to Tmp.Count-1 do begin if Pos(';', tmp[i])<>0 then begin per := tmp[i]; Pass := Copy(per, Pos(';', per)+1, Length(per)-Pos(';', per)+1); SetLength(per, Pos(';', per)-1); Mail := per; memolog.Lines.Add('Нашёл: mail = '+mail+' | pass = '+pass); // отсылаем запрос на авторизацию если вернёться True тогда всё окей :) z := LoginVK(Mail, Pass); if z = true then begin MemoLog.Lines.Add('Авторизация прошла успешно!'); MemoGoodAcc.Lines.Add(Mail+';'+Pass); end else begin MemoLog.Lines.Add('Авторизация не удалась! Аккаунт не активен!'); MemoFuckAcc.Lines.Add(Mail+';'+Pass); end; end; end; End else MemoLog.Lines.Add('Добавьте аккаунты!') end; ну и собственно потом кнопочкой вызываю OkLetsGo и там...фигу мб где то ошибся...хотя не заметил этого. P.S. я пока учусь так, что не ругайте
Откуда в LoginVK взялся HTTP? Хоть бы текст ошибки привел... Ну и утечка памяти: Code: Tmp := TStrings.Create; Tmp := ListBoxAccount.Items;
От верблюда он взялся: Code: uses Idhttp; private { Private declarations } HTTP : TidHTTP; пока мы не об утечки говорим.... я не знаю как ошибки выложить и откуда их взять, расскажите мне.. после нажатия кнопки вылитает окошко error пишет: Code: Access violation at address 00552F14 in module 'ChekerProject.exe'. Read of adress 00000148 жму окей и всё... :\
Добавил я ее в : Code: function TMainForm.LoginVK(const Mail, Pass: string): boolean; var Cookie, StrPage, StrPage2 : String; //Создаём переменную Post : TStringList; //Создаём переменную Post begin try Post:=TStringList.Create; HTTP := TidHTTP.Create(nil); // первый пост, передаём данные Post.Add('act=login'); Post.Add('success_url='); Post.Add('fail_url='); Post.Add('try_to_login=1'); Post.Add('to='); Post.Add('vk='); Post.Add('email='+Mail); Post.Add('pass='+Pass); Post.Add('expire='); StrPage:=HTTP.Post('http://login.vk.com', Post); //Чистим пост Post.Clear; // тащим куки Cookie:=Copy(StrPage, 351, 56); // второй пост, передаём куки =) Post.Add('s='+Cookie); Post.Add('op=slogin'); Post.Add('redirect=1'); Post.Add('expire=0'); Post.Add('to='); Post.Add('fail_url='); Post.Add('try_to_login=1'); Post.Add('to'); StrPage2:=HTTP.Post('http://vkontakte.ru/login.php', Post); If Pos('window.awayHash', StrPage2) <> 0 Then Result := True Else Result := False; finally end; end; а в прочем уже разобрался со своими ошибками, спасибо Redeemer я создал HTTP появилась ошибка 302 потом поставил в функции редирект тру и куки и понеслась кривая в щавель
Да не за что Только теперь еще сделай вот так: Code: function TMainForm.LoginVK(const Mail, Pass: string): boolean; var Cookie, StrPage, StrPage2 : String; //Создаём переменную Post : TStringList; //Создаём переменную Post begin Post:=TStringList.Create; HTTP := TidHTTP.Create(nil); try // тут куча твоего кода finally HTTP.Free; Post.Free; end; end;