Привет, нужна помощь. Есть например строка 123, нужно получить: 1) 1 2 3 2) 12 13 23 Далее, если например строка 1234,нужно получить: 1) 1 2 3 4 2) 12 13 14 23 24 34 3) 134 124 123 234 Реализовать алгоритм для каждого случая не проблема,но нужно, чтоб алгоритм не зависел от количества элементов
Раз с алго проблем нет то просто используй динамические массивы. Например: PHP: var num:array of integer; i,kol:integer; begin Write('Kolvo: '); Readln(kol); SetLength(num,kol); For i:=1 to kol do num[i]:=i; ...
Не, вы наверно меня не поняли. Динамические массивы тут не при чем. Вот, например, чтобы вывести то, что мне нужно для 123 я использую код: Code: procedure reflex3(myfz:string); var k, i:integer; temp:string; begin for i := 1 to 2 do for k := 1 to Length(myfz) do begin temp:=myfz; delete(temp, k, i); Writeln(temp); end; for k := 1 to Length(myfz) do writeln(myfz[k]); end; Для того, чтобы вывести для 1234 нужен уже другой код, а мне нужна универсальность. Вот и спрашиваю как сделать, чтоб код не зависел от количества элементов =) Сделал так: Это чтоб не повторялись: Code: var st:tstringlist; .... st:=TStringList.Create; st.Sorted:=true; st.Duplicates:=dupIgnore; Code: procedure newrewlex(f:string); var i,k:integer; temp:string; begin if Length(f)=1 then exit; for k := 1 to Length(f) do begin temp:=f; delete(temp, k, 1); st.Add(temp); newrewlex(temp); end; end;
Появилась ошибка Написал код авторизации ВК Code: procedure TForm1.Button3Click(Sender: TObject); var a:integer; b:string; c:variant; begin c:=WebBrowser1.OleObject.Document.forms.item(0).elements; for a:=0 to (c.lenght-1) do begin if (c.item(a).name='email') then c.item(a).value:='e-mail'; if (c.item(a).name='password') then c.item(a).value:='password'; if (c.item(a).value='Âõîä') then c.item(a).click ; end; end; При нажатии зловещей Button3 выдает
Зависит от конкретной задачи. В любом случае советую логинется на winsock, или на крайняк indy, тк webbrowser жрёт много ресурсов
Авторизовывался в контакте след. кодом : PHP: Post := TStringList.Create; Response := TStringList.Create; //1 запрос Post.Add('op=a_login_attempt'); Response.Text := IdHTTP1.Post('http://vkontakte.ru/login.php',Post); //2 запрос Post.Clear; Post.Add('email=mail'); Post.Add('pass=password'); Post.Add('expire='); Post.Add('vk='); Response.Text := IdHTTP1.Post('http://login.vk.com/?act=login',Post); Post.Clear; //Парсим хэш hash := Response.Text; Delete(hash,1,Pos('value',hash)+6); Delete(hash,Pos('''',hash),Length(hash)); //3 запрос Post.Add('s='+hash); Post.Add('op=slogin'); Post.Add('redirect=1'); Post.Add('expire=0'); Post.Add('to='); Post.Add('request_method=post'); Response.Text := IdHTTP1.Post('http://vkontakte.ru/login.php',Post); Сейчас в отпуске. На другой машине скачал дельфи. Набросал код для авторизации, но он не проходит. Хотя буквально неделю назад тем же кодом авторизовывался. В чем проблема, кто подскажет? Подозреваю что проблема с куками(т.е с самим Delphi).....
Там вроде параметр s переименовали.. ща снифером гляну ------------------- не, ошибся, там что то другое..
TrueBit, попробуй моим кодом авторизоваться плз... Просто я подозриваю, что дело в дельфи... Щас с другого компа сижу, и дельфи новая...
Code: //str - переменная, в которой находится строка вида ip:port ip:=copy(str,0,pos(':',str)-1); port:=copy(str,pos(':',str)+1,length(str)-pos(':',str)); {ip, port:string;} {бла-бла-бла} http1.Connect(ip,strtoint(port)); ошибка говорит о несоответствии типов в последней строке. Code: [Error] Unit1.pas(805): Incompatible types: 'Integer' and 'String' [Error] Unit1.pas(1147): Incompatible types: 'Integer' and 'String' [Fatal Error] Project2.dpr(6): Could not compile used unit 'Unit1.pas'
Cthulchu, ты посмотри с какими аргументами вызывается процедура... Вроде бы так надо http1.host := 'ya.ru'; http1.Post := 80; http1.Connect;
вот так у меня написана авторизация на сайте Code: procedure TForm1.Button1Click(Sender: TObject); var http:thttpsend; res,data:string; begin //создаём обьект http:=thttpsend.Create; //формируем заголовок для отправления http.Headers.Append('Connection: close'); http.UserAgent:='Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7'; http.MimeType:='application/x-www-form-urlencoded'; //формируем данные для ПОСТ запроса data:='name='+edit1.Text+'&password='+edit2.text+'&x=0&y=0'; http.Document.Write(Pointer(data)^, Length(data)); //посылаем запрос if http.HTTPMethod('POST','http://www.proplay.ru') then begin //обрабатываем ответ SetLength(res,http.Document.Size); http.Document.Read(pointer(res)^,http.Document.Size); if pos('301',http.Headers.Text)<>0 then begin label3.Caption:='Авторизация прошла успешно'; end else label3.Caption:='Авторизация не удалась'; end else showmessage('Ошибка подключения'); //чистимся http.Free; end; end. вроде работает, выдает редирект в сниффере на ссылку пользователя, а как мне создать такой пост запрос чтобы он отправлял сообщение на форум. страница допустим http://www.proplay.ru/forums/cs/64457/ или http://www.proplay.ru/forums/cs/64457/reply я не знаю. Переменная там используется только одна body в ней передается сообщение. Когда я на сайте пишу сообщение то потом перекидывает в тему, а из программы в сниффере показывает, что перекидывает опять на эту страницу reply то есть сообщение не пропускает выходит что-то.