Запись в файл [Delphi]

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Rastamanka, 28 May 2012.

  1. Rastamanka

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

    Joined:
    26 Nov 2008
    Messages:
    429
    Likes Received:
    11
    Reputations:
    7
    Доброе утро. Имееться функция

    Code:
    function send_post(request,url_send,agent,referer:string):string;
    var
      stream: TStringStream;
      BodyS: TStringList;
      HTTP:THTTPSend;
      begin
          HTTP := THTTPSend.Create;
    
            try
              HTTP.Document.Clear;
              HTTP.UserAgent := agent;
              HTTP.MimeType := 'application/x-www-form-urlencoded';
              HTTP.Headers.Add('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' );
              HTTP.Headers.Add('AcceptLanguage: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3');
              HTTP.Headers.Add('Referer: '+referer);
              if(cookie<>'') then HTTP.Cookies.Text:=cookie;
    
              if(request<>'') then
                begin
                  stream:=TStringStream.Create('');
                  stream.WriteString(request);
                  HTTP.Document.LoadFromStream(stream);
                  HTTP.HTTPMethod('post',url_send);
                end;
    
              BodyS := TStringList.Create;
              BodyS.LoadFromStream(HTTP.Document);
    
              Result:=BodyS.Text;
          finally
            HTTP.Free;
    
            end;
    
      end;
    
    К примеру с помощью этого кода я иду по урлу http://forum.antichat.ru/antichat/pic/logo.gif
    Как мне потом его сохранить в файл? Надо именно на synacode, indy не предлагать.
     
  2. C@T

    C@T Member

    Joined:
    7 Sep 2011
    Messages:
    12
    Likes Received:
    6
    Reputations:
    10
    BodyS.SaveToFile('file.png'); :)

    или же считай все не в TStringStream , а в TMemoryStream и вызови метод SaveToFile у потока :)
     
  3. HackingAll

    HackingAll Banned

    Joined:
    16 May 2011
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    если правильно понял


    PHP:

    var s:TMemoryStream;
    begin
    s
    :=tmemorystream.Create;
      
    HttpGetBinary('http://forum.antichat.ru/antichat/pic/logo.gif',s);
      
    s.SaveToFile('C:\logo.gif');
    s.Free;
    end;
     
  4. Mifody

    Mifody New Member

    Joined:
    18 Jan 2011
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    ох, что-то мне этот код напоминает, а тем более переменная BodyS, а по теме:
    1. то, что предложил HackingAll, 100% работоспособно, правда только для случаев, когда данные в свободном доступе (без авторизации)
    2. Rastamanka - направление мыслей верное, только все, что после
    Code:
    HTTP.HTTPMethod('post',url_send);
    можно смело сносить нафиг, а написать
    Code:
    HTTP.Document.SaveToFile('бла бла, какойтотамфайл')
     
  5. ADR-007

    ADR-007 Member

    Joined:
    12 Jul 2010
    Messages:
    218
    Likes Received:
    9
    Reputations:
    0
    Возможно так:
    PHP:
      var s:TMemoryStream;
    begin
      s
    :=TMemoryStream.Create;
      
    HttpGetBinary('http://forum.antichat.ru/antichat/pic/logo.gif's);
      
    s.Possition := 0;
      
    s.SaveToFile('C:\logo.gif');
      
    s.Free;
    end;