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

C++Builder Discussion :

Télécharger un fichier texte et l'importer


Sujet :

C++Builder

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 111
    Points : 55
    Points
    55
    Par défaut Télécharger un fichier texte et l'importer
    Bonjour,

    Je suis novice en C++ et j'aimerai donc que vous m'aidiez pour le développement de mon premier projet.
    Voici ce que je voudrai faire :
    Quand on clique sur un bouton :
    - Télécharger un fichier texte sur internet.
    Il se présente de cette façon :
    - J'aimerai afficher les noms et garder en mémoire les IDs qui permettront de former les urls correspondant aux noms, il s'agit en fait d'une mini liste.

    J'ai pas mal cherché sur le net mais je n'ai pas trouvé beaucoup de doc sur le traitement de fichier, ou aucune doc qui me convient, en même temps si j'avais un niveau un peu plus élevé j'aurai pu, peut être, utiliser celle-ci.

    Merci d'avance.

  2. #2
    Membre actif
    Avatar de Djob
    Inscrit en
    Août 2002
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 215
    Points : 279
    Points
    279
    Par défaut
    tu peux utiliser l'api URLDownloadToFile (urlmon.h) pour telecharger ton fichier

    et l'objet et la methode TStringList->LoadFromFile(FilePath) pour stocker toutes les lignes de ton fichier , et ainsi faire les traitements nécessaires....

  3. #3
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonsoir,

    Y a un truc ici :
    http://<br /> http://www.developpez...=tidhttp<br />
    qui pourrais peut etre t'aider...

    @ +

  4. #4
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 111
    Points : 55
    Points
    55
    Par défaut
    Après plusieurs tentatives je n'arrive à n'utiliser ni l'une ni l'autre de ces deux méthodes.
    Je dois oublier quelque chose pour que ça fonctionne.

    Avec urlmon.h voici le code que j'ai écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <urlmon.h>
    ...
    void __fastcall TPrincipale::dlClick(TObject *Sender)
    {
     
    URLDownloadToFile(0, "http://siteweb.com/liste.txt", "code.txt", 0, 0);
     
    // on avertit l'utilisateur que le dl est fini
    MessageBox(0, "Téléchargement du code terminé...", "Info", MB_OK);
    }
    Et pourtant ça ne fonctionne pas.

    Je pensais à tord pouvoir créer un petit programme tout simple pour récupérer un fichier et le lire et je me rends compte que c'est bien plus compliqué que ça et que la doc est vraiment disperssée sur le net, il faudrait que je me lance en appronfondissent plus dans la programmation...

    Enfin si quelqu'un a toujours un code à me proposer je suis bien entendu preneur.

    Merci pour vos deux réponses et bonne journée.

  5. #5
    Membre actif
    Avatar de Djob
    Inscrit en
    Août 2002
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 215
    Points : 279
    Points
    279
    Par défaut
    bon c'est vrai que urltofile n'est pas toujours fiable...mais il vaut mieux mettre "c:\\code.txt".

    Mais te décourage pas ! Je vais te filer un gros coup de pouce...
    tu peux essayer par exemple à la place une fonction qui se base sur wininet: (bon c'est une fonction écrite vite fait, je donne aucune garantie quant à sa fiabilité à 100% , j'ai fais 2 tests seulement sur une fichier test et une image et ça avait l'air de fonctionner..)

    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
     
    #include <stdio.h>
    #include "wininet.h"
     
    bool __fastcall MyDownloadToFile(String URLSourceFile,String DestFile)
    {
      if(FileExists(DestFile)) DeleteFile(DestFile);
      char cBuffer[1024];
      DWORD dwBytesRead;
      FILE * fichier;
      String AppName = ExtractFileName(Application->ExeName);;
      HINTERNET hInternetSession =InternetOpen(AppName.c_str(), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
      try{
          HINTERNET hURL = InternetOpenUrl(hInternetSession, URLSourceFile.c_str(), NULL,0,0,0);
          try{
            fichier= fopen(DestFile.c_str(),"ab+");
     
            do{
            InternetReadFile(hURL,(LPSTR)cBuffer,(DWORD)1024,&dwBytesRead);
            fwrite(cBuffer, dwBytesRead, 1, fichier);
            }while (dwBytesRead!=0);
     
            fclose(fichier);
            InternetCloseHandle(hURL);
            InternetCloseHandle(hInternetSession);
            return true;
          }catch(...){
            InternetCloseHandle(hURL);
            InternetCloseHandle(hInternetSession);
            return false;
          }
      }catch(Exception &e){
         InternetCloseHandle(hInternetSession);
         return false;
      }
    }
    (en cas d'erreur de linkage, ajoute la librairie wininet.lib à ton projet)
    et l'utiliser comme ceci ...


    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
     
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
     
          String DestFile = ExtractFilePath(Application->ExeName)+"Code.txt";;
          String Url = "http://siteweb.com/liste.txt";
     
          if(! MyDownloadToFile(Url,DestFile))     // téléchargement
          {
            ShowMessage("fichier non téléchargé");
          }else {
              TStringList * log =  new TStringList();
              log->LoadFromFile(DestFile);             // mise en mémoire de toute les lignes
     
              // pour ton cas avec nom et id , on verifie qu'il y a bien un nombre pair de ligne
              if(log->Count%2!=0) {
                    ShowMessage("Anomalie dans le fichier");
                    return;
              }
              // Récupération des nom et id dans 2 listes différentes
              TStringList * list_nom = new TStringList();
              TStringList * list_id = new TStringList();
     
              for(int i=0;i<log->Count;i++){
                 if(i%2==0){                                //ligne contenant le nom
                     list_nom->Add(log->Strings[i]);
                 }else{
                     list_id->Add(log->Strings[i]);       //ligne contenant l'id
                 }
              }
             // affichage dans un memo des noms puis des id........
              Memo1->Clear();
     
              Memo1->Lines->AddStrings(list_nom);
              Memo1->Lines->AddStrings(list_id);
     
              delete list_nom;
              delete list_id;
          }
    }

  6. #6
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 111
    Points : 55
    Points
    55
    Par défaut
    Bonjour,

    Après quelques moi d'absence, je retrouve avec plaisir ce message, et je vous remercie pour vos réponses claires.

    Bonne journée.

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

Discussions similaires

  1. [XL-2000] Télécharger un fichier texte et le retraiter en fond de tâche
    Par noftal dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/08/2013, 00h58
  2. Télécharger un fichier texte généré en PHP
    Par seb92500 dans le forum Langage
    Réponses: 4
    Dernier message: 02/10/2008, 19h14
  3. Réponses: 12
    Dernier message: 28/09/2007, 14h01
  4. télécharger un fichier texte
    Par poula dans le forum Forms
    Réponses: 9
    Dernier message: 14/01/2007, 10h50
  5. Importer des fichiers textes délimités
    Par Invité dans le forum Outils
    Réponses: 2
    Dernier message: 23/09/2002, 13h56

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