Página 1 de 3 123 ÚltimoÚltimo
Resultados 1 a 10 de 28
  1. #1

    [Desafio] Componente de download de páginas

    Bom como pediram um desafio na área de Delphi/Pascal eu formulei um desafio simples,mas vai envolver boas práticas de programação.
    Por favor poste apenas as sources(*.pas,*.dpk,*.dcr,etc),não será aceito nenhuma dcu

    O componente deve executar download de páginas da web(Usando a HTTP Request GET) e salvar em algum local passado como parametro ao chamar a função.

    Aviso:Eu sou muito bom em achar coisa pronta na internet,então tente não copiar e colar código pronto,tenha como referência,entenda a lógica e implemente do seu jeito.

    Código:
    Nível de dificuldade : Médio  | [x][x][x][ ][ ][ ] |
    Regras do desafio:
    • O Componente deve ter como classe pai a TComponent.
    • O Componente só podera ter na Uses as seguintes units: SysUtils,Classes,Windows,Winsock,ShellApi.
    • É Permitido o uso de qualquer API do Windows.
    • É pemitido o uso de Inline assembly.
    • O Componente deve ser registrado em alguma paleta de componente do delphi.
    Instruções para postar o código
    • Sources entre tags code,Link de download de todos os arquivos.
    Espero que gostem do desafio,pois alem de vocês estarem se exercitando ,vocês estão contribuindo com o fórum.
    Última edição por R0Dr1g0.; 07 Jan 2012 às 09:50.
    MP Com dúvidas e pedidos de ajudas serão IGNORADAS
    "Mentes fracas não pensam,corpos fracos não lutam."

    Microsoft Technology Associate: Software Development Fundamentals (C#
    )

  2. #2
    Eu tenho uma WinAPI,sei que a uma Uses dela só que não é permitido eu poderia chama-la com GetProcAddress / LoadLibrary ?

  3. #3
    Citação Postado originalmente por KaiqueHunter Ver Post
    Eu tenho uma WinAPI,sei que a uma Uses dela só que não é permitido eu poderia chama-la com GetProcAddress / LoadLibrary ?
    Pode usar sim,como eu disse qualquer API pode ser usada.
    MP Com dúvidas e pedidos de ajudas serão IGNORADAS
    "Mentes fracas não pensam,corpos fracos não lutam."

    Microsoft Technology Associate: Software Development Fundamentals (C#
    )

  4. #4
    Código:
    Unit Download;
    
    Interface
    
    Uses
      Classes,Windows;
    
    Type
      IInterface = Interface
      End;
      TDownload = Class(TComponent)
      Private
        { Private declarations }
      Protected
        { Protected declarations }
      Public
      Function PageDownload(Pagina : String;Local: String) : Boolean;
      Published
        { Published declarations }
      End;
    
      Var
      UrlDownloadToFile: Function(Caller: IInterface; URL: PChar; FileName: PChar; Reserved: DWORD; StatusCB: IInterface): HResult; StdCall;
    
    Procedure Register;
    
    Implementation
    
    Procedure Register;
    Begin
      RegisterComponents('Samples', [TDownload]);
    End;
    
    Function TDownload.Download(Pagina : String;Local: String) : Boolean;
    Begin
      If Copy(Pagina,1,7) <> 'http://' Then Begin Pagina:= 'http://' + Pagina End;
      If UrlDownloadToFile(Nil,Pchar(Pagina),Pchar(Local),0,Nil) = 0 Then
        Begin
         Result:= True;
         Exit;
        End;
      Result:= False;
    End;
    
    Begin
      @UrlDownloadToFile:= GetProcAddress(LoadLibrary('urlmon.dll'),Pchar('URLDownloadToFileA'));
    End.



    http://www.mediafire.com/download.php?wy1ps870ipox2fg

    Terminei,é bem simples,mas funciona,percebi que a API não tava funcionando sem o http:// ai coloquei pra verificar caso não tivesse iria colocar automaticamente.
    Última edição por R0Dr1g0.; 07 Jan 2012 às 11:32.

  5. #5
    Citação Postado originalmente por KaiqueHunter Ver Post
    http://www.mediafire.com/download.php?wy1ps870ipox2fg

    Terminei,é bem simples,mas funciona,percebi que a API não tava funcionando sem o http:// ai coloquei pra verificar caso não tivesse iria colocar automaticamente.
    Se tiver como seguir o padrão de postagem que eu sugeri eu agradeço,colocando o código fonte no seu post,me manda por MP que eu edito.
    MP Com dúvidas e pedidos de ajudas serão IGNORADAS
    "Mentes fracas não pensam,corpos fracos não lutam."

    Microsoft Technology Associate: Software Development Fundamentals (C#
    )

  6. #6
    Tentei enviar mas o seu numero de mensagens privadas foi excedida.

  7. #7
    Gray Hat Avatar de CoderSc
    Data de Ingresso
    Jan 2011
    Localização
    #!/bin/bash
    Posts
    1.736
    Fiz um bem simples também sem muitas opções, o código fonte está no pastebin
    Når du føler flove over at se på tras eller bange for at se fremad, se venstre eller højre I be altid ved din side.

    H
    aters Gonna Hate

  8. #8
    CoderSc,Ficou bem parecido com o meu,achei algumas coisas desnecessarios no seu que deixa o codigo maior.

  9. #9
    Dei uma olhada nos dois agora,esperava mais,por exemplo tem código solto no meio que não pertence a objeto algum,tem um que o código ta num begin e end solto.
    e também não vi aonde é tratado o http response,para por exemplo se deu 404 ele retornar algum erro ,ou seja sem nenhum tratamento de erro.
    Vou estar fazendo o meu.
    Última edição por R0Dr1g0.; 07 Jan 2012 às 15:56.
    MP Com dúvidas e pedidos de ajudas serão IGNORADAS
    "Mentes fracas não pensam,corpos fracos não lutam."

    Microsoft Technology Associate: Software Development Fundamentals (C#
    )

  10. #10
    Gray Hat Avatar de CoderSc
    Data de Ingresso
    Jan 2011
    Localização
    #!/bin/bash
    Posts
    1.736
    Citação Postado originalmente por R0Dr1g0. Ver Post
    Dei uma olhada nos dois agora,esperava mais,por exemplo tem código solto no meio que não pertence a objeto algum,tem um que o código ta num begin e end solto.
    e também não vi aonde é tratado o http response,para por exemplo se deu 404 ele retornar algum erro ,ou seja sem nenhum tratamento de erro.
    Vou estar fazendo o meu.
    No meu tem alguns "códigos soltos" por exemplo a função "myurldownloadtofile" acho que não tem a necessidade de anexar ao objeto porque não vai se usar, e tem a procedure trim que retirei de SysUtils (pra diminuir o tamanho).

    Agora esse do begin e end ai não achei aqui.

    Agora para ver se retorna algum erro poderia-se usar a função httpqueryinfo da wininet quem sabe da pra implementar futuramente.
    Når du føler flove over at se på tras eller bange for at se fremad, se venstre eller højre I be altid ved din side.

    H
    aters Gonna Hate

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • Você não pode enviar respostas
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •