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

Lazarus Pascal Discussion :

[Linux] GetCurrentDir ne renvoie pas le chemin courant de l'application


Sujet :

Lazarus Pascal

  1. #1
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2008
    Messages
    390
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2008
    Messages : 390
    Par défaut [Linux] GetCurrentDir ne renvoie pas le chemin courant de l'application
    Bonjour,

    Suite à un conseil donné dans un autre message, j'ai voulu utiliser la fonction GetCurrentDir pour avoir le dossier courant d'une application pour indiquer le chemin "FileName de composant sqlite3Dataset.
    Sous Windows, la réponse est correcte tant depuis l4EDI que depuis l'exécutable mais voilà une particularité que je ne m'explique pas : sous Linux Fedora 20 en 64 bits j'ai créé une petite application pour tester la réponse de cette fonction car l'application devant utiliser cette fonction me donnait un message d'erreur.
    Mon application de test est simple ; voir le code ci-dessous :
    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
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      Close;
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      // préparation de l'environnement
      defaultFormatSettings.ShortDateFormat:='DD/MM/YYYY';
      defaultFormatSettings.DateSeparator:='/';
      defaultFormatSettings.DecimalSeparator:=',';
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Edit1.Text:=GetCurrentDir;
    end;
    Cette petite application se trouve dans le dossier
    /home/j/laz-linux/chemin
    Donc je devrais avoir à l'exécution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Edit1.Text = /home/j/laz-linux/chemin
    et bien oui et non.
    Depuis la commande exécuter de l'EDI j'ai la bonne réponse. Mais depuis l'exécutable, j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Edit1.Text = /home/j/laz-linux
    Pourquoi cette différence ? Et une autre fonction ou instruction peut-elle corriger ce problème pour avoir le même code dans les deux systèmes d'exploitation ?

    Merci d'avance pour votre aide
    A+

  2. #2
    Membre Expert

    Homme Profil pro
    au repos
    Inscrit en
    Février 2014
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2014
    Messages : 429
    Par défaut
    Bonjour.

    Si c'est pour trouver le répertoire de ton application, if suffit de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AppPath:= ExtractFilePath(Application.ExeName);
    Cordialement
    Thierry

  3. #3
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2008
    Messages
    390
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2008
    Messages : 390
    Par défaut
    Merci Thierry,
    C'est une autre solution qui fonctionne, mais pourquoi je n'ai pas la réponse à la différence constatée selon la manière de lancer mon appli.
    A+

  4. #4
    Nouveau membre du Club Avatar de Fapoche
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Septembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2012
    Messages : 7
    Par défaut
    Citation Envoyé par ovni76 Voir le message
    Merci Thierry,
    C'est une autre solution qui fonctionne, mais pourquoi je n'ai pas la réponse à la différence constatée selon la manière de lancer mon appli.
    A+
    Bonjour,
    La réponse de Thierry est la bonne. En Delphi et su Windows, c'est la technique que j'utilise aussi.
    Le problème que vous posez est le même sur Windows avec Delphi. GetCurrentDir renvoie le chemin du dernier SetCurrentDir utilisé et cela peut être réalisé par n'importe quel autre programme. C'est une sorte de chemin "Par défaut" mais mieux vaut l'utiliser très localement dans vos fonctions.

Discussions similaires

  1. Jointure qui ne renvoie pas tous les enregistrements
    Par rayonx dans le forum Langage SQL
    Réponses: 12
    Dernier message: 19/07/2024, 10h33
  2. [XL-2003] ActiveWorkbook.Path ne renvoie pas le chemin voulu
    Par Heflav dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 04/10/2010, 16h51
  3. apache ne renvoie pas les pages de plus de 255 octets!
    Par vedrfolnir dans le forum Apache
    Réponses: 1
    Dernier message: 20/02/2006, 17h05
  4. Réponses: 3
    Dernier message: 06/12/2005, 14h44
  5. Réponses: 2
    Dernier message: 13/01/2005, 00h08

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