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 :

Lire un fichier INI sur le net


Sujet :

C++Builder

  1. #1
    Membre expert
    Avatar de Faith's Fall
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 740
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 740
    Points : 3 249
    Points
    3 249
    Par défaut Lire un fichier INI sur le net
    Bonsoir,

    Voilà un petit souci, sur mon programme je souhaite gérer les messages de mise a jour pour un soft que je développe. Mon idée est simple, mettre un fichier texte (plus précisement un fichier ini) avec un numéro de version dedans puis au démarrage, lire ce fichier prendre la valeur et comparé avec celle du soft en cours. (Si différent nouvelle maj).

    Donc, je fais mon ini:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [UPDATE]
    BUILD=12345
    et je le stocke sur le net a l'adresse http://bwp-necromance.developpez.com/monfichier.ini

    pour le moment aucun souci.

    Sous builder, je rajoute le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TIniFile *ini = new TIniFile("http://bwp-necromance.developpez.com/monfichier.ini");
    Je rappatrie la valeur dans une variable et je fais la comparaison.

    En fait mon problème est que la valeur qui est rappatrié est null. Et j'ai l'impression que le fait de passer par un lien (http://bwp-necromance.developpez.com/monfichier.ini) ne marche pas avec le constructeur

    Par contre, la je vois pas trop comment faire ? Quelqu'un peut m'aider ?


  2. #2
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut
    Bonsoir,

    Voici une partie d'un de mes codes. Il doit manquer quelques petits détails.

    Cette partie se met dans le formcreate pour vérifier si une mise à jour est en cours.
    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
    if (ParamCount() > 0)
       {
       if (ParamStr(1) == "updater")
          {
          if (FileExists(ExtractFilePath(Application->ExeName) + "updater.zip") == true)
             {
             DeleteFile(ExtractFilePath(Application->ExeName) + "updater.zip");
             }
          if (FileExists(ExtractFilePath(Application->ExeName) + "updater.exe") == true)
             {
             DeleteFile(ExtractFilePath(Application->ExeName) + "updater.exe") ;
             }
             Sysutils::Beep();
             MessageDlg("Mise à jour effectuée.", mtConfirmation, TMsgDlgButtons() << mbOK, 0);
          }
       }
    Et voici la partie de mise à jour :
    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
    TFileStream *v ;
    try
    {
    v = new TFileStream (ExtractFilePath(Application->ExeName) + "version.txt", fmCreate);
    }
    catch ( ... )
    {
    MessageDlg("Impossible de créer le fichier" + ExtractFilePath(Application->ExeName) + "version.txt", mtError, TMsgDlgButtons() << mbOK, 0);
    return;
    }
    try {
    IdHTTP1->Get(URL2,v);
    }
    catch( ... )
    {
    MessageDlg("Impossible de se connecter au serveur. Votre connexion internet est fermée ou le serveur est indisponible momentanément.", mtError, TMsgDlgButtons() << mbOK, 0);
    return;
    }
    delete v;
    Memo4->Lines->LoadFromFile(ExtractFilePath(Application->ExeName) + "version.txt");
    if (FileExists(ExtractFilePath(Application->ExeName) + "version.txt") == true)
       {
       if (DeleteFile(ExtractFilePath(Application->ExeName) + "version.txt") == false)
          {
          MessageDlg("Une erreur c'est produite lors de la mise à jour. Veuillez procéder à celle-ci manuellement ou effacer le fichier " + ExtractFilePath(Application->ExeName) + "version.txt.", mtError, TMsgDlgButtons() << mbOK, 0);
          return;
          }
       }
    if (Version != Memo4->Text)
       {
       MessageDlg("Votre logiciel est en version " + Version + ". La version actuelle est " + Memo4->Text + ". Vous devez mettre à jour votre logiciel pour pouvoir continuer.", mtWarning, TMsgDlgButtons() << mbOK, 0);
       Memo4->Text = "";
       if (FileExists(ExtractFilePath(Application->ExeName) + "updater.zip") == true)
          {
          if (DeleteFile(ExtractFilePath(Application->ExeName) + "updater.zip") == false)
             {
             MessageDlg("Une erreur c'est produite lors de la mise à jour. Veuillez procéder à celle-ci manuellement ou effacer le fichier " + ExtractFilePath(Application->ExeName) + "updater.zip.", mtError, TMsgDlgButtons() << mbOK, 0);
             return;
             }
          }
       if (FileExists(ExtractFilePath(Application->ExeName) + "updater.exe") == true)
          {
          if (DeleteFile(ExtractFilePath(Application->ExeName) + "updater.exe") == false)
             {
             MessageDlg("Une erreur c'est produite lors de la mise à jour. Veuillez procéder à celle-ci manuellement ou effacer le fichier " + ExtractFilePath(Application->ExeName) + "updater.exe.", mtError, TMsgDlgButtons() << mbOK, 0);
             return;
             }
          }
       TFileStream *f ;
       try
       {
       f = new TFileStream (ExtractFilePath(Application->ExeName) + "updater.zip", fmCreate);
       }
       catch ( ... )
       {
       MessageDlg("Impossible de créer le fichier" + ExtractFilePath(Application->ExeName) + "updater.zip", mtError, TMsgDlgButtons() << mbOK, 0);
       return;
       }
       try {
       IdHTTP1->Get(URLup,f);
       }
       catch( ... )
       {
       MessageDlg("Impossible de se connecter au serveur. Votre connexion internet est fermée ou le serveur est indisponible momentanément.", mtError, TMsgDlgButtons() << mbOK, 0);
       return;
       }
       delete f;
       try {
       AbUnZipper1->FileName = ExtractFilePath(Application->ExeName) + "updater.zip";
       AbUnZipper1->ExtractFiles("*.*");
       AbUnZipper1->FileName = "";
       }
       catch ( ... )
       {
       MessageDlg("Fichier corrompue. Veuillez relancer la mise à jour et en cas de renouvellement de cette erreur, essayer plus tard ou téléphonez à la société.", mtError, TMsgDlgButtons() << mbOK, 0);
       return;
       }
       if (DeleteFile(ExtractFilePath(Application->ExeName) + "updater.zip") == false)
          {
          MessageDlg("Impossible d'effacer le fichier " + ExtractFilePath(Application->ExeName) + "updater.zip", mtError, TMsgDlgButtons() << mbOK, 0);
          }
       AnsiString Updater = ExtractFilePath(Application->ExeName) + "updater.exe";
       ShellExecute(Handle,"open",Updater.c_str(),0,0,SW_SHOW);
       Form1->Close();
       }
    Il faut rajouter le paramètre quand on lance le programme et géré mieux le changement de nom du programme qui gère lui-même sa mise à jour.

  3. #3
    Membre expert
    Avatar de Faith's Fall
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 740
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 740
    Points : 3 249
    Points
    3 249
    Par défaut
    Merci de ton aide, mais ce n'est pas exactement ce que je cherche. Je cherche pas a faire la maj directement, juste lire le fichier INI. Mais bon ton code me servira peut etre par la suite.

    Mais l'idée du IdHTTP est bon a suivre, je vais voir de ce coté

    en tout les cas merci

  4. #4
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 531
    Points : 537
    Points
    537
    Par défaut
    juste pour test:

    - enlève le http:// et commence au www.xxxx
    - met juste l'adresse ip du site/Nom de fichier

    et en dernier recours fait une copie http du fichier en local avant tes tests.

  5. #5
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut
    Le début du code télécharge un petit fichier texte qui ne comporte qu'un nombre que l'on peut lire dans un mémo qui est ensuite comparé au numéro de version actuel du programme. C'est pas ce que tu voulais?

  6. #6
    Membre expert
    Avatar de Faith's Fall
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 740
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 740
    Points : 3 249
    Points
    3 249
    Par défaut
    Citation Envoyé par gandf
    Le début du code télécharge un petit fichier texte qui ne comporte qu'un nombre que l'on peut lire dans un mémo qui est ensuite comparé au numéro de version actuel du programme. C'est pas ce que tu voulais?
    Si si, je vais tester

  7. #7
    Membre expert
    Avatar de Faith's Fall
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 740
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 740
    Points : 3 249
    Points
    3 249
    Par défaut
    Bon tester avec idhttp et sa marche. Merci a tous pour votre aide

    Problème résolu

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

Discussions similaires

  1. Lire fichier .ini en VB.net
    Par lepiaf69 dans le forum VB.NET
    Réponses: 2
    Dernier message: 06/09/2010, 15h16
  2. Lire un fichier .ini sous Linux
    Par cheprod dans le forum Linux
    Réponses: 2
    Dernier message: 26/04/2006, 17h34
  3. Réponses: 6
    Dernier message: 23/02/2006, 12h09
  4. Envoyer un fichier lourd sur le net
    Par Bouassa dans le forum Autres Logiciels
    Réponses: 6
    Dernier message: 10/02/2006, 12h25
  5. Probleme pour lire un fichier Ini
    Par Sebinou dans le forum C++Builder
    Réponses: 11
    Dernier message: 10/03/2004, 23h22

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