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

Free Pascal Discussion :

Télécharger un fichier - appeler lecteur d'image - déterminer version de Windows


Sujet :

Free Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12
    Par défaut Télécharger un fichier - appeler lecteur d'image - déterminer version de Windows
    Bonjour

    Je me suis remis à programmer en pascal depuis peu avec lazarus sous debian. (À L'époque où je programmais il n'y avait pas encore de turbopascal )

    J'ai un de mes programmes qui intéresse un collègue qui est sous windows
    Je porte donc mon programme sous win mais il me reste deux ou trois choses à régler

    -> 1) Comment télécharger un fichier en pascal, J'ai beaucoup de mal à trouver l'info car je tombe toujours sur téléchager lazarus ou delphi.
    Je souhaite en effet sur le clic d'un bouton télécharger l'executable (qui est dans un .zip) de gnuplot qui se trouve ici http://puzzle.dl.sourceforge.net/sou...gp424win32.zip
    (et pour dézipper ce fichier que faut il utiliser )

    N'ayant pas windows j'ai des questions sur cet os
    -> 2) Comment appeler le lecteur d'image png par defaut
    sous xp j'appelle rundll32.exe c:\windows\system32\shimgvw.dll,imageview_fullscreen
    mais sous 98 ? sous vista? sous xp64? sous vista64? (je ne sais même pas si xp64bits existe)

    -> 3) Avez vous une procédure pour reconnaitre win98, xp32 xp64 vista32 vista64 ?
    Je plaide coupable pour cette question car je n'ai pas encore cherché.

    Merci de m'aider.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12
    Par défaut appeler lecteur d'image - déterminer version de Windows
    Pour télécharger un un fichier c'est bon j'ai trouvé, avec Indy :
    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
    unit filedownload;
     
    {$mode objfpc}{$H+}
     
    {
       Download file via indy.
       Copyright Marty ( neodivx@neodivx.be )
       2008/01/28
    }
     
    interface
     
    uses
      Classes, SysUtils,Forms,idHTTP,IdComponent;
     
    type
      TFileDownloadEvent=procedure(Sender:TObject;_position,_min,_max:Double) of object;
      TFileDownload=class(TComponent)
      private
        FFileDownloadEvent:TFileDownloadEvent;
        FMax:Double;
        FRunning:Boolean;
        FHTTP:TidHTTP;
        FStream:TFileStream;
        FFileFrom,FFileTo:string;
      private
        procedure CmMessage(_position,_min,_max:Double);
        procedure IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;AWorkCountMax: Int64);
        procedure IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;AWorkCount: Int64);
        procedure IdHTTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
      public
        constructor Create(AOwner:TComponent);override;
        destructor Destroy;override;
        function Run:Boolean;
      public
        property OnFileDownload:TFileDownloadEvent read FFileDownloadEvent write FFileDownloadEvent;
        property Running:Boolean read FRunning;
        property FileFrom:string read FFileFrom write FFileFrom;
        property FileTo:string read FFileTo write FFileTo;
      end;
     
    implementation
     
    constructor TFileDownload.Create(AOwner:TComponent);
    begin
      inherited Create(AOwner);
      FRunning:=False;
      FHTTP := TIdHTTP.create(nil);
      FHTTP.OnWork:=@idHTTP1Work;
      FHTTP.OnWorkBegin:=@idHTTP1WorkBegin;
      FHTTP.OnWorkEnd:=@idHTTP1WorkEnd;
    end;
     
    destructor TFileDownload.Destroy;
    begin
      try
        FHTTP.Free;
      except
      end;
      inherited Destroy;
    end;
     
    procedure TFileDownload.CmMessage(_position,_min,_max:Double);
    begin
      if Assigned(FFileDownloadEvent) then begin
        FFileDownloadEvent(Self,_position,_min,_max);
      end;
      Application.ProcessMessages;
    end;
     
    procedure TFileDownload.IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;AWorkCountMax: Int64);
    begin
      FRunning:=True;
      if AWorkMode = wmRead then begin
        FMax:=AWorkCountMax;
        CmMessage(0,0,AWorkCountMax);
      end;
    end;
     
    procedure TFileDownload.IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;AWorkCount: Int64);
    begin
      if AWorkMode = wmRead then begin
        CmMessage(AWorkCount,0,FMax);
      end;
    end;
     
    procedure TFileDownload.IdHTTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
    begin
      FRunning:=False;
      if AWorkMode = wmRead then begin
        CmMessage(FMax,0,FMax);
      end;
    end;
     
    function TFileDownload.Run:Boolean;
    begin
      FStream:=TFileStream.Create(FFileTo,fmCreate or fmShareDenyNone);
      FHTTP.Get(FFileFrom,FStream);
      // correction 1
      try
         FStream.Free;
      except
      end;
      Result:=True;
    end;
     
     
    end.
    Pour l'utiliser :
    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
    unit Unit1; 
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Buttons,
      ComCtrls, StdCtrls, filedownload;
    type
     
      { TForm1 }
     
      TForm1 = class(TForm)
        BitBtn1: TBitBtn;
        Label1: TLabel;
        ProgressBar1: TProgressBar;
        procedure BitBtn1Click(Sender: TObject);
      private
        { private declarations }
      public
        { public declarations }
        procedure Update(Sender:TObject;_position,_min,_max:Double);
      end;
     
    var
      Form1: TForm1; 
     
    implementation
     
    { TForm1 }
     
    procedure TForm1.Update(Sender:TObject;_position,_min,_max:Double);
    begin
      Label1.Caption:=Format('%f bytes',[_position]);
      ProgressBar1.Max:=Round(_max/1024);
      ProgressBar1.Position:=Round(_position/1024);
      Application.ProcessMessages;
    end;
     
    procedure TForm1.BitBtn1Click(Sender: TObject);
    var
      FileDownload1:TFileDownload;
    begin
      FileDownload1:=TFileDownload.Create(Self);
      FileDownload1.OnFileDownload:=@Update;
      FileDownload1.FileFrom:='http://www.truc.be/filefrom.zip';
      FileDownload1.FileTo:='/tmp/test.zip';
      FileDownload1.Run;
      while FileDownload1.Running do begin
        Application.ProcessMessages;
      end;
      ShowMessage('Work''s done');
    end;
     
    initialization
      {$I unit1.lrs}
     
    end.
    J'ai compilé et installé indy sur ma debian et tout marche bien

    Je ne passe pas en resolu car il me reste ma deuxième appelé le lecteur d'image de vista et 98.

    ps: Tu as raison Alcatîz mon titre n'était pas assez clair

Discussions similaires

  1. [FTP] Télécharger un fichier par FTP
    Par jerome38000 dans le forum Langage
    Réponses: 5
    Dernier message: 27/05/2011, 15h41
  2. Télécharger un fichier Zip depuis une adresse internet
    Par jmjmjm dans le forum Web & réseau
    Réponses: 8
    Dernier message: 18/10/2005, 19h12
  3. Problème pour Télécharger des fichiers
    Par joce3000 dans le forum C++Builder
    Réponses: 8
    Dernier message: 21/01/2005, 10h30
  4. [FTP] Télécharger un fichier
    Par Piolet dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 09/12/2004, 10h42
  5. Réponses: 3
    Dernier message: 24/02/2004, 15h09

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