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

Langage Delphi Discussion :

transformer cette fonction


Sujet :

Langage Delphi

  1. #1
    Membre habitué
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 382
    Points : 161
    Points
    161
    Par défaut transformer cette fonction
    Bonjour,

    Je voudrais modifier cette fonction pour imposer ce chemin pour l'enregistrement du fichier

    LocalFileName:=ExtractFilePath(Application.ExeName);

    si quelqu'un pouvait m'aider car j'avoue que je patauge fortement.

    Le problème se pose lorsqu'une boite de dialogue "open" à été utilisée (dans ce cas le fichier est enregistré dans le dossier ouvert par la boite de dialogue)

    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
     
    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,INTERNET_FLAG_NO_CACHE_WRITE or INTERNET_FLAG_RELOAD,0);
      try
     
       AssignFile(f, fichier_texte);
       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;
    75 ans quelques dents en moins, mais toujours envie d'apprendre

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Bonjour, je n'ai pas bien compris ce que vous vouliez faire, est-ce que vous pourriez ré-expliquer ?
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  3. #3
    Membre éclairé Avatar de Kaféine
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 569
    Points : 736
    Points
    736
    Par défaut
    Salut,

    c'est pas plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AssignFile(f, FileName);
    au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AssignFile(f, fichier_texte);
    ???
    Akim Merabet

  4. #4
    Membre habitué
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 382
    Points : 161
    Points
    161
    Par défaut
    Cette appli gére des collections de timbres et cette fonction est appelée par cette procédure qui permet de télécharger depuis mon site internet un fichier txt qui contient tous les éléments pour la création des collections


    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
    procedure Taffiche.Importationdunenouvellebase1Click(Sender: TObject);
    var
      FileOnNet, LocalFileName: string;
      SomeTxtFile : TextFile;
      buffer : string;
    begin
     
     if DetectionConnexion=false then
      begin
      ShowMessage('Pas de connection internet');
      exit;
      end;
     //-----------récupération du fichier--------------------
      fichier_texte:='base_collec_complet.txt';
      LocalFileName:=ExtractFilePath(Application.ExeName);
      FileOnNet:='http://www.timbres-de-france.com/xx/Fic_texte/'+fichier_texte;
      Label104.Visible:=true;
      Label104.Caption := 'Transfert en Cours ...';
      Label104.Refresh;
      if GetInetFile(FileOnNet, LocalFileName)=True then
       begin
        Label104.Visible:=false;
        ShowMessage('Transfert terminé');
        end
      else
        ShowMessage('Une erreur c"est produite pendant le transfert');
     
    end;


    Si l'appli est simplement lancée sans qu'une collection ne soit ouverte le fichier est bien téléchargé dans le dossier de l'appli.

    Par contre si la boite de dialogue à été appelée pour ouvrir une collection c'est le chemin de cette boite qui est utilisé pour le stockage du fichier.

    Donc mon problème c'est de "forcer" le chemin même lorsqu'une collection est ouverte
    75 ans quelques dents en moins, mais toujours envie d'apprendre

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Vu. C'est dû au fait que vous stockez le nom du fichier dans la variable fichier_texte qui doit être globale et c'est cette variable qui est utilisée ensuite GetInetFile. Sauf que tel quel, ce chemin est relatif et donc dépendant du "répertoire par défaut" qui est justement modifié par une boite de dialogue justement.

    L'idée aurait été d'utiliser LocalFileName qui est aussi passé en paramètre de GetInetFile mais ce paramètre n'est pas du tout utilisé dans la méthode comme le remarquait à juste titre Kaféine.

    Voici ce que ça donnes une fois corrigé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fichier_texte:='base_collec_complet.txt';
      LocalFileName:=ExtractFilePath(Application.ExeName) + '/' + fichier_texte;
    Et dans GetInetFile :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AssignFile(f, FileName);
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  6. #6
    Membre habitué
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 382
    Points : 161
    Points
    161
    Par défaut
    Un grand merci à vous, problème résolu
    75 ans quelques dents en moins, mais toujours envie d'apprendre

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

Discussions similaires

  1. qu'est ce qui va pas dans cette fonction???
    Par access001 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 18/04/2006, 13h10
  2. code OK transformation en fonction non OK
    Par zulot dans le forum Langage
    Réponses: 1
    Dernier message: 01/04/2006, 21h05
  3. Comment lancer cette fonction sur un bouton ?
    Par jeronimo dans le forum Access
    Réponses: 2
    Dernier message: 26/01/2006, 11h33
  4. Réponses: 1
    Dernier message: 05/12/2005, 08h10
  5. Réponses: 5
    Dernier message: 03/12/2004, 10h16

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