IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web & réseau Delphi Discussion :

téléchargement d'un fichier internet


Sujet :

Web & réseau Delphi

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 31
    Par défaut téléchargement d'un fichier internet
    Salut tlm,

    Je fais une application qui a besoin de données qui sont sur internet, ces données changent toutefois à tous les minutes environ.

    j'ai donc utilise la fonction suivante pour télécharger le code source de la page puis pour l'insérer dans mon programme.

    Le problème, c'est que même si les donnés sur la page internet change, les données qui sont transférées sur mon ordinateur son tjrs les même. Si toutefois je redémarre mon application, et bien les données sont à jour.

    Quelqu'un aurait une idée?

    MERCI

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    unit Princ;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Wininet, StdCtrls, DdeMan;
     
    type
      TForm1 = class(TForm)
        ButtonRefresh: TButton;
        Memo1: TMemo;
        DdeServerConv1: TDdeServerConv;
        DdeServerItem1: TDdeServerItem;
        Edit1: TEdit;
        procedure ButtonRefreshClick(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure Memo1Change(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
     
    function GetInetFile
    (const fileURL, FileName: String): boolean;
    const BufferSize = 1024;
    var
      hSession, hURL: HInternet;
      Buffer: array[1..BufferSize] of Byte;
      BufferLen: DWORD;
      f: File;
      sAppName: string;
    begin
     Result:=False;
     sAppName := ExtractFileName(Application.ExeName);
     hSession := InternetOpen(PChar(sAppName),
                    INTERNET_OPEN_TYPE_PRECONFIG,
                   nil, nil, 0);
     try
      hURL := InternetOpenURL(hSession,
                PChar(fileURL),
                nil,0,0,0);
      try
       AssignFile(f, FileName);
       Rewrite(f,1);
       repeat
        InternetReadFile(hURL, @Buffer,
                         SizeOf(Buffer), BufferLen);
        BlockWrite(f, Buffer, BufferLen)
       until BufferLen = 0;
       CloseFile(f);
       Result:=True;
      finally
       InternetCloseHandle(hURL)
      end
     finally
      InternetCloseHandle(hSession)
     end
    end;
     
     
    procedure TForm1.ButtonRefreshClick(Sender: TObject);
    var FileOnNet, LocalFileName: string;
    F2 : File;
    SomeTxtFile : TextFile;
    buffer : string;
     
    begin
     
    If FileExists('C:\Documents and Settings\Benoit Landry\Bureau\AirTracking'
     +'\Datas\Flight_ASH7166.txt') then begin
    AssignFile(F2,'C:\Documents and Settings\Benoit Landry\Bureau\AirTracking'
     +'\Datas\Flight_ASH7166.txt');
    Erase(F2);
    end;
     
     FileOnNet:=
      'http://flightaware.com/live/flight/ASH7166/'+
      'history/20070113/0330Z/KAVP/KORD/tracklog';
     LocalFileName:='C:\Documents and Settings\Benoit Landry\Bureau\AirTracking'
     +'\Datas\Flight_ASH7166.txt';
     
     if GetInetFile(FileOnNet,LocalFileName)=True then
      ShowMessage('Download successful')
     else
      ShowMessage('Error in file download');
     
      AssignFile(SomeTxtFile, 'C:\Documents and Settings\Benoit Landry\Bureau'
      +'\AirTracking\Datas\Flight_ASH7166.txt') ;
      Reset(SomeTxtFile) ;
      while not EOF(SomeTxtFile) do
      begin
       ReadLn(SomeTxtFile, buffer) ;
       Memo1.Lines.add(buffer) ;
      end;
      CloseFile(SomeTxtFile) ;
    end;
     
     
    end.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 343
    Par défaut
    Piste peut-être: C'est un problème de cache sur un serveur proxy..Je suis pas précis car je n'ai pas lu ton code (je sais c'est mal) desolé.

  3. #3
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 117
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 117
    Par défaut
    'Soir !
    Tu es sûr de ça : ?
    changent toutefois à tous les minutes environ
    Parce que même en modifiant les flags comme ça (source : sdk) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      hURL := InternetOpenURL(hSession,
                PChar(fileURL),
                nil,0,INTERNET_FLAG_NO_CACHE_WRITE or INTERNET_FLAG_RELOAD,0);
    Windiff me dit que les fichiers téléchargés (je change le nom à la mano après chaque download) sont les mêmes...
    À creuser...
    --
    jp

    PS : la proc ButtonRefresh que j'ai utilisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    procedure TForm1.ButtonRefreshClick(Sender: TObject);
    var
      FileOnNet, LocalFileName: string;
      SomeTxtFile : TextFile;
      buffer : string;
    begin
      LocalFileName:='C:\Flight_ASH7166.txt';
      FileOnNet:=
      'http://flightaware.com/live/flight/ASH7166/'+
      'history/20070113/0330Z/KAVP/KORD/tracklog';
     
      if GetInetFile(FileOnNet, LocalFileName)=True then
        ShowMessage('Download successful')
      else
        ShowMessage('Error in file download');
     
      AssignFile(SomeTxtFile, LocalFileName);
      Reset(SomeTxtFile) ;
      while not EOF(SomeTxtFile) do
      begin
        ReadLn(SomeTxtFile, buffer) ;
        Memo1.Lines.add(buffer) ;
      end;
      CloseFile(SomeTxtFile) ;
    end;

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 31
    Par défaut
    Tu avais mit le doigt sur le problème en changeant le flag...

    Le problème que tu as eu n'est pas dans ton programme... C'est tout simplement que les donnés que je download sont en fait l'état d'un vol (provenant d'avions de ligne)... Mais lorsque toi tu a essayé le programme, et bien l'avion avait surement déjà atterit, il n'y avait donc plus de nouvelles données de vol, donc les fichiers étaient identiques!

    Merci beaucoup pour ton aide!

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 3
    Par défaut Merci
    Bonjour,

    Merci pour la fonction GetInetFile.

    Je galère depuis plusieurs heures avec le TWebbrowser.navigate pour essayer de télécharger un fichier.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Téléchargement d'un fichier sur internet
    Par Icaryss dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/07/2014, 13h56
  2. Téléchargement automatique de fichier d'internet
    Par Lguillon dans le forum Windows 7
    Réponses: 3
    Dernier message: 15/03/2013, 09h02
  3. Réponses: 0
    Dernier message: 06/12/2011, 17h43
  4. Réponses: 3
    Dernier message: 15/04/2009, 17h03
  5. téléchargement de fichier internet explorer
    Par david06600 dans le forum Windows XP
    Réponses: 10
    Dernier message: 31/07/2006, 00h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo