Uses InetCtlsObjects_TLB { voir les commentaires }; { renvoie tout ce se trouve après le dernier "/" } Function ExtractUrlFileName(Const aUrl: String): String; Var {$ifdef ver200} Ptr : PWord; {$else} Ptr : PByte; {$endif} I, Lng : Integer; Begin Result := aUrl; Lng := Length(aUrl); Ptr := @Result[Lng]; For I := Lng Downto 1 Do Begin If Ptr^ = $2F Then Break; Dec(Ptr); End; Inc(Ptr); Result := Pchar(Ptr); End; { Télécharge "Source" vers "Dest" avec INet si "Dest" est vide c'est le nom de fichier contenu dans "Source" qui est utilisé } Function DownloadFileFromUrl(Const Source: String; Var Dest: String): Boolean; Type TBArray = Array Of byte; Var aByteBuffer: olevariant; p: pointer; I: Cardinal; Begin Result := True; With TInet.Create(Nil) Do Try Try AccessType := icUseDefault; Protocol := icHTTP; aByteBuffer := OpenURL(OLEVariant(Source), icByteArray); While StillExecuting Do ; Except Result := False; Exit; End; Finally Free; End; With TMemoryStream.Create Do Try Try I := VarArrayHighBound(aByteBuffer, 1)+1; DynArrayFromVariant(P, aByteBuffer, TypeInfo(TBArray)); WriteBuffer(P^, I); If Dest = '' Then Dest := ExtractUrlFileName(Source); SaveToFile(Dest); Except Result := False; End; Finally Free; aByteBuffer := Unassigned; DynArrayClear(P, TypeInfo(TBArray)); End; End; { Utilisation } Procedure Tfrm_Main.btn_TestINetClick(Sender: TObject); Var aDest: String; Begin aDest := ''; If DownloadFileFromUrl('http://www.delphifr.com/gdi/c/45850.cs.jpg', aDest) Then ShowMessagefmt('Le téléchargement de %s a réussit', [aDest]) Else ShowMessagefmt('Le téléchargement de %s a échoué', [aDest]); End;
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.