[ 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. patcher

    patcher Banned

    Joined:
    15 Dec 2009
    Messages:
    190
    Likes Received:
    37
    Reputations:
    10
    странно, у мя все работает. ну ладно, вот накидал на Indy (хреново что с https не работает, сцук) :
    Code:
    uses ...IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP;
    
    ----------------------------------------------------
    
    
    function CheckURL_Indy(url:string):boolean;
    var http:TIdHTTP;
    begin
    try
    http:=TIdHTTP.Create(nil);
    http.Get(url);
    if http.ResponseCode=200 then result:=true else
    result:=false;
    http.Free;
    except
    result:=false;
    end;
    end;
    
    примитивно, но вроде работает))
     
    1 person likes this.
  2. 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 то есть сообщение не пропускает выходит что-то иначе был бы редирект в тему
     
    #6442 minei, 18 Jun 2010
    Last edited: 18 Jun 2010
  3. heretic1990

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

    Joined:
    2 Jul 2008
    Messages:
    487
    Likes Received:
    182
    Reputations:
    5
    patcher, спасибо, что надо. проблема была в том что надо было проект запускать не из под компилятора, тогда бы не вылетало))
     
  4. crazyserega1994

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

    Joined:
    25 Dec 2007
    Messages:
    27
    Likes Received:
    3
    Reputations:
    0
  5. heretic1990

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

    Joined:
    2 Jul 2008
    Messages:
    487
    Likes Received:
    182
    Reputations:
    5
    что нужно сделать чтобы прога сама себя скопировал куда-нибудь и от туда себя запустила?
    p.s. CopyFile в автозапуск не предлагать))
     
  6. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    CopyFile + WinExec/ShellExecute/CreateProcess
    CreateFile + ReadFile/WriteFile + CloseHandle + WinExec/ShellExecute/CreateProcess
     
  7. crazyserega1994

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

    Joined:
    25 Dec 2007
    Messages:
    27
    Likes Received:
    3
    Reputations:
    0
    Пробую так:
    Code:
    procedure TForm4.Button1Click(Sender: TObject);
    var buf:string;
        addr:sockaddr_in;
        sock:integer;
        data:WSAData;
    begin
    WSAStartup($101,data);
    sock:=Socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
    buf :=#$FF#$FF#$FF#$FF#$54#$53#$6F#$75#$72#$63#$65#$20#$45#$6E#$67#$69#$6E#$65#$20#$51#$75#$65#$72#$79#$00;
    addr.sin_family:=AF_INET;
    addr.sin_port:=htons(22003);
    addr.sin_addr.S_addr:=inet_addr('127.0.0.1');
    sendto(sock,buf,sizeof(buf),0,addr,sizeof(addr));
    end;
    
    Но сниффер ничего не видет
     
  8. heretic1990

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

    Joined:
    2 Jul 2008
    Messages:
    487
    Likes Received:
    182
    Reputations:
    5
    и ещё вопрос, что будет если диска или папки куда копируется файл не будит существовать?
    и как можно с помощью функции CopyFile скопировать файл во временную папку, если не знаешь название диска?
     
    #6448 heretic1990, 20 Jun 2010
    Last edited: 20 Jun 2010
  9. wolmer

    wolmer Member

    Joined:
    12 May 2009
    Messages:
    438
    Likes Received:
    97
    Reputations:
    9
    Если ты про wireshark, то он не видит отправку типа "127.0.0.1 --> 127.0.0.1"
    (/me в шоке)

    Code:
    WSAStartup($101,data);
    sock:=Socket(AF_INET,[COLOR=Red]SOCK_DGRAM,IPPROTO_UDP[/COLOR]);
    buf :=#$FF#$FF#$FF#$FF#$54#$53#$6F#$75#$72#$63#$65#$20#$45#$6E#$67#$69#$6E#$65#$20#$51#$75#$65#$72#$79#$00;
    addr.sin_family:=AF_INET;
    addr.sin_port:=htons(123);
    addr.sin_addr.S_addr:=inet_addr('188.40.76.205');
    sendto(sock,buf[COLOR=Red][1][/COLOR],[COLOR=Red]length(buf)[/COLOR],0,addr,sizeof(addr));
     
    #6449 wolmer, 20 Jun 2010
    Last edited: 20 Jun 2010
  10. Kass

    Kass New Member

    Joined:
    24 May 2010
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    господа! я в этой теме задала уже второй вопрос, и опять мне на него не отвечают! также заметила, что не мне одной так везет.
     
  11. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    занятно. это второе сообщение на форуме. значит видимо первый вопрос по паскалю, а второй имеется ввиду прямо этот вопрос?
     
  12. Kass

    Kass New Member

    Joined:
    24 May 2010
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    нет, первый был удален в связи с бесперспективностью ожидания на него ответа
     
  13. SNAIPER ShoT

    SNAIPER ShoT Elder - Старейшина

    Joined:
    24 Jun 2007
    Messages:
    48
    Likes Received:
    3
    Reputations:
    0
    2 вопроса :)
    1 как сделать что бы грузилось изображение на форму (в данном случие капча) и по ее клику.. либо кнопке она обновлялась.. (было бы не плохо если бы подсказали с двойной капчей которая по разным ссылка.. но что бы обновлялись одновременно)

    2 как заставить программу автоматом выключать или включать инет? (ну или в ручную хотябы по отключению сетки и обратно)
     
  14. heretic1990

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

    Joined:
    2 Jul 2008
    Messages:
    487
    Likes Received:
    182
    Reputations:
    5
    SNAIPER ShoT, загружаешь сначала капчу себе на комп, а потом с компа выводишь в Image, а на событие onClick (для картинки) делаешь повторную загрузку изображения.
     
  15. SNAIPER ShoT

    SNAIPER ShoT Elder - Старейшина

    Joined:
    24 Jun 2007
    Messages:
    48
    Likes Received:
    3
    Reputations:
    0
    так мне надо что бы она грузилась сразу с сайта в прогу и при нажатии обнавлялась
     
  16. heretic1990

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

    Joined:
    2 Jul 2008
    Messages:
    487
    Likes Received:
    182
    Reputations:
    5
    я сам задавался раньше таким вопросом, да и не только я. в ответ всегда одно и тоже. конечно можешь попробовать загружать её в WebBrowser, но не знаю что у тебя там получиться.
     
  17. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    SNAIPER ShoT, С вконтакта я капчу так грузил :
    В uses > Jpeg
    В var >
    MemoryStream : TMemoryStream;
    link : string(ссылка на капчу)
    Captcha : TJPEGImage;
    PHP:
     IdHTTP1.Get(link,MemoryStream);
     
    MemoryStream.Position := 0;
     
    Captcha.LoadFromStream(MemoryStream);
     
    Image1.Picture.Graphic :=  captcha;
     
  18. SNAIPER ShoT

    SNAIPER ShoT Elder - Старейшина

    Joined:
    24 Jun 2007
    Messages:
    48
    Likes Received:
    3
    Reputations:
    0
    не хочет.. проблема в том что там двойная капча.. (капча) (капча2) и линк на них тоже разный.
     
  19. Meecript_

    Meecript_ Banned

    Joined:
    29 Oct 2008
    Messages:
    194
    Likes Received:
    62
    Reputations:
    32
    пример объединения 3х картинок
    PHP:
    TJPEGImageBufPic = new TJPEGImage;
    TImagecap_image = new TImage(NULL);
    cap_image->Width 210// ширина
    cap_image->Height 50// высота
    for(int i 03; ++i)
    {
        
    // тут должен быть код, которым поочереди получаем нужные картинки
        
        
    BufPic->LoadFromStream(msCaptcha); /// msCaptcha - объект класса TMemoryStream
        
    cap_image->Canvas->Draw(700BufPic); // переносим рисунок в Image
    }
    BufPic->Assign(cap_image->Picture->Bitmap); // загружаем рисунок в буфер jpeg
    BufPic->SaveToFile(sCapFile); // сохраняем в файл
    синтаксис только поменяй под делфи
     
  20. AquaKlaster

    AquaKlaster Active Member

    Joined:
    9 Mar 2009
    Messages:
    0
    Likes Received:
    204
    Reputations:
    23
    Вот пример объеденения 3х картинок на дельфи(в своё время юзал для соединения капч маил ру)
    Code:
    var
      BufPic: TJpegImage; // буфер для загрузки рисунков
      i: byte;
    begin
      BufPic := TJpegImage.Create; // создаем объект
      BufPic.LoadFromFile('1.jpg'); // загружаем в него 1-й рисунок
      Form1.Image1.Canvas.Draw(0, 0, BufPic); // переносим 1-й рисунок в Image
      BufPic.LoadFromFile('2.jpg'); // загружаем в него 2-й рисунок
      Form1.Image1.Canvas.Draw(75, 0, BufPic); // переносим 2-й рисунок в Image
      BufPic.LoadFromFile('3.jpg'); // загружаем в него 3-й рисунок
      Form1.Image1.Canvas.Draw(150, 0, BufPic); // переносим 3-й рисунок в Image
      Image1.Picture.SaveToFile('cap.jpg');
      end;
     
Thread Status:
Not open for further replies.