[ Delphi / Pascal ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by banned, 6 May 2007.

Thread Status:
Not open for further replies.
  1. Скотти

    Скотти Member

    Joined:
    17 Sep 2009
    Messages:
    23
    Likes Received:
    8
    Reputations:
    0
    Привет, нужна помощь.

    Есть например строка 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


    Реализовать алгоритм для каждого случая не проблема,но нужно, чтоб алгоритм не зависел от количества элементов
     
  2. .::f-duck::.

    .::f-duck::. Member

    Joined:
    30 May 2009
    Messages:
    343
    Likes Received:
    32
    Reputations:
    7
    Скотти, strln + for() ?
     
  3. s0l_ir0n

    s0l_ir0n Active Member

    Joined:
    14 Mar 2009
    Messages:
    399
    Likes Received:
    144
    Reputations:
    18
    Раз с алго проблем нет то просто используй динамические массивы. Например:
    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;
    ...
     
  4. Скотти

    Скотти Member

    Joined:
    17 Sep 2009
    Messages:
    23
    Likes Received:
    8
    Reputations:
    0
    Не, вы наверно меня не поняли. Динамические массивы тут не при чем.
    Вот, например, чтобы вывести то, что мне нужно для 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;
    
     
    #6404 Скотти, 16 Jun 2010
    Last edited: 16 Jun 2010
  5. AlexTheC0d3r

    AlexTheC0d3r Elder - Старейшина

    Joined:
    25 Jul 2008
    Messages:
    388
    Likes Received:
    179
    Reputations:
    18
    очень просто, модифицируй мой генератор

    http://zemus.us/05/combination-generator.html
     
    1 person likes this.
  6. Dead4ik

    Dead4ik Member

    Joined:
    23 Jun 2009
    Messages:
    34
    Likes Received:
    25
    Reputations:
    5
    Появилась ошибка
    Написал код авторизации ВК
    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 выдает
    [​IMG]
     
  7. TrueBit

    TrueBit Member

    Joined:
    21 Nov 2009
    Messages:
    71
    Likes Received:
    19
    Reputations:
    4
    мб length, а не lenght?
    А вообще webbrowser уг:/
     
    1 person likes this.
  8. Dead4ik

    Dead4ik Member

    Joined:
    23 Jun 2009
    Messages:
    34
    Likes Received:
    25
    Reputations:
    5
    Точно. Но все равно ошибка
    [​IMG]
    Есть альтернатива?
     
  9. TrueBit

    TrueBit Member

    Joined:
    21 Nov 2009
    Messages:
    71
    Likes Received:
    19
    Reputations:
    4
    Зависит от конкретной задачи.
    В любом случае советую логинется на winsock, или на крайняк indy, тк webbrowser жрёт много ресурсов
     
  10. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Авторизовывался в контакте след. кодом :

    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).....
     
  11. TrueBit

    TrueBit Member

    Joined:
    21 Nov 2009
    Messages:
    71
    Likes Received:
    19
    Reputations:
    4
    Там вроде параметр s переименовали..
    ща снифером гляну
    -------------------
    не, ошибся, там что то другое..
     
    #6411 TrueBit, 16 Jun 2010
    Last edited: 16 Jun 2010
  12. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    TrueBit, попробуй моим кодом авторизоваться плз... Просто я подозриваю, что дело в дельфи... Щас с другого компа сижу, и дельфи новая...
     
  13. TrueBit

    TrueBit Member

    Joined:
    21 Nov 2009
    Messages:
    71
    Likes Received:
    19
    Reputations:
    4
    Пробовал на D7 всё норм, авторизовался
     
  14. Cthulchu

    Cthulchu Elder - Старейшина

    Joined:
    22 Nov 2007
    Messages:
    405
    Likes Received:
    721
    Reputations:
    85
    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'
     
    #6414 Cthulchu, 16 Jun 2010
    Last edited: 16 Jun 2010
  15. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Cthulchu, ты посмотри с какими аргументами вызывается процедура...
    Вроде бы так надо
    http1.host := 'ya.ru';
    http1.Post := 80;
    http1.Connect;
     
  16. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    TrueBit, ппц так и знал, что в дельфи проблема.... Не подкинешь ссылку где нормальную слить можно?
     
  17. TrueBit

    TrueBit Member

    Joined:
    21 Nov 2009
    Messages:
    71
    Likes Received:
    19
    Reputations:
    4
    Уж и не помню где слил, попробуй на рутрекере поискать
     
  18. Cthulchu

    Cthulchu Elder - Старейшина

    Joined:
    22 Nov 2007
    Messages:
    405
    Likes Received:
    721
    Reputations:
    85
    подкиньте плз либу regexpr для дельфи семерки, не могу сгуглить.
     
  19. TrueBit

    TrueBit Member

    Joined:
    21 Nov 2009
    Messages:
    71
    Likes Received:
    19
    Reputations:
    4
    тыц
     
    1 person likes this.
  20. minei

    minei New Member

    Joined:
    30 Apr 2009
    Messages:
    19
    Likes Received:
    0
    Reputations:
    0
    вот так у меня написана авторизация на сайте
    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 то есть сообщение не пропускает выходит что-то.
     
Thread Status:
Not open for further replies.