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 :

[FMX] Problème d'accès au répertoire Documents


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 57
    Points : 47
    Points
    47
    Par défaut [FMX] Problème d'accès au répertoire Documents
    Bonjour à tous,
    J'obtiens un message d'erreur avec ce code lors de l'accès au répertoire Documents.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    var
      ParamsPath : string;
      inifile:Tinifile;
      State : Integer;
    begin
      ParamsPath := System.IOUtils.TPath.Combine(System.IOUtils.TPath.GetDocumentsPath, 'Imagelys MS');;
      inifile:=tinifile.Create(System.IOUtils.TPath.Combine(ParamsPath, 'Imagelys MS.ini'));
      State := inifile.ReadInteger('Settings', 'State',0);
      inifile.free;
    end;
    Nom : Untitled - 2.jpg
Affichages : 282
Taille : 29,7 Ko
    Ce problème est apparu depuis Delphi Alexandria 11.
    Ma configuration est Delphi Alexandria 11.3 et MacOS Ventura avec processeur Apple.
    L'application est compilée pour Intel et s'exécute avec Rosetta 2.
    Existe-t-il un moyen pour que l'application obtienne l'autorisation d'accéder à ce répertoire ?
    J'ai compilé cette application pour processeur Apple et elle fonctionne correctement.

  2. #2
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 614
    Points
    3 614
    Par défaut
    Bonsoir

    Le sous-dossier "Imagelys MS" existe bien ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 57
    Points : 47
    Points
    47
    Par défaut
    Oui il existe. Cela fonctionne compilé pour processeurs Apple mais cela ne fonctionne pas compilé pour processeurs Intel. Peut-être un problème avec Alexandria.

  4. #4
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 614
    Points
    3 614
    Par défaut
    Bon, c'est très chelou dans ce cas et cette erreur est bien censée être une absence de fichier (que System.IniFile devrait créer s'il ne le trouve pas) ou l'impossibilité d'y accéder : https://docwiki.embarcadero.com/Libr...es.EFOpenError

    Vérifie au niveau de Projets / Options s'il y a une différence entre les "droits" affectés sur les deux types de compilation.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 57
    Points : 47
    Points
    47
    Par défaut
    J'ai vérifié au niveau de Projets / Options et il y a aucune différence entre les "droits" affectés sur les deux types de compilation.
    De plus, cela fonctionnait avec Delphi Sydney. Le problème est apparu avec Alexandria.
    Savez-vous à quoi correspond l'erreur "interrupted system call" et comment faire pour s'en débarrasser.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 222
    Points : 55
    Points
    55
    Par défaut
    Bonjour,
    je sais suis un novice
    mais je crois qu'il manque '/' devant non Imagelys MS.ini
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     inifile:=tinifile.Create(System.IOUtils.TPath.Combine(ParamsPath, 'Imagelys MS.ini'));
    du moins
    Désolé si je me trompe

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 119
    Points : 41 252
    Points
    41 252
    Billets dans le blog
    63
    Par défaut
    Pour répondre à tintin62 , non parce que Tpath.Combine s'en charge, c'est plutôt l'espace qui pose un problème

  8. #8
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 586
    Points : 25 262
    Points
    25 262
    Par défaut
    Pour le '/' manquant, c'est la particularite de Combine, qui gère les chemins relatifs sur le paramètre Path2, ajouter '/' devant me semble périlleux, pire "\\" en Windows qui indique un chemin réseau pour Path2.
    Path2 ne doit pas renvoyer True pour TPath.IsPathRooted pour que cela le concatène donc préfixer en UNIX de '/' me semble contre-productif

    Soit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.IOUtils.TPath.Combine(ParamsPath, 'Imagelys MS.ini')
    Soit plus simple à mon avis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IncludeTrailingPathDelimiter(ParamsPath) + 'Imagelys MS.ini'
    Pour être multiplateforme autant éviter / et \ !

    Enfin que veut dire ParamsPath
    ParamsPath si l'on est régoureux se termine par un délimiteur, c'est un chemin à la différence ParamsDir qui est le nom du dossier
    Bien nommé ses variables et se tenir à une convention permet aussi de résoudre de ce genre de question mais on dirait que TPath n'a pas respecté les conventions Delphi de l'époque de ExtractFileDir et ExtractFilePath !!!




    Sinon IniFile ? même sous FMX ?
    Un format JSON cela ne sera-t-il pas un plus moderne ?
    voir YAML qui est parfait pour les fichiers configurations.



    Et tintin62 tu vois bien dans le premier message de jbrg que son chemin est complet :

  9. #9
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 586
    Points : 25 262
    Points
    25 262
    Par défaut
    Citation Envoyé par jbrg Voir le message
    Ce problème est apparu depuis Delphi Alexandria 11.
    Ma configuration est Delphi Alexandria 11.3 et MacOS Ventura avec processeur Apple.
    L'application est compilée pour Intel et s'exécute avec Rosetta 2.
    .
    Tu n'avais pas le problème avec une version précédente ?
    As-tu regarde le code de IniFiles si il y a une différence d'implémentation ?
    Une différence dans les packages pour MacOs peut-aussi

    Et oui, un Espace, dans les noms de fichiers, si tu peux l'éviter, ça te simplifiera la vie, surtout si derrière, tu peux avoir envie de faire de la ligne de commande, les admin UNIX te remercierons d'avoir penser à faire simple.


    Ce chemin retournée par TPath.GetDocumentsPath
    C'est un vrai chemin ?
    En Windows, on a un tas de surprise avec des noms de chemin translaté à la volée, aussi bien langue de l'utilisateur que l'architecture processeur ... en MacOS, il y a ce genre de tricherie aussi ???

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 57
    Points : 47
    Points
    47
    Par défaut
    Merci ShaiLeTroll,

    Oui, cela fonctionnait avec Delphi Sydney et MacOS Catalina.
    Je vais tester sans l'espace.

    Est-ce que tu sais a quoi correspond l'erreur Interrupted system call ?
    Peut-être qu'il y a un souci avec la gestion des autorisations d'accès au répertoire documents.
    Qu'en penses-tu ?

  11. #11
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 614
    Points
    3 614
    Par défaut
    si ça n'est pas résolu d'ici là je ferai le test quand j'aurai à nouveau du courant, théoriquement d'ici mercredi

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 57
    Points : 47
    Points
    47
    Par défaut
    Bonjour à tous,
    J'ai fait beaucoup de tests ces derrières semaines et voici les résultats.
    L'erreur "interrupted system call" lors de l'accès au répertoire Documents ne se produit uniquement en mode Debug.
    En mode Release, sans le débogage, l'application fonctionne normalement.
    Peut-être qu'il y a un problème au niveau du Debug.

  13. #13
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 614
    Points
    3 614
    Par défaut
    Désolé, je zappé le test, mais globalement n'ai pas de soucis dans les programmes récents travaillant dans le dossier des Documents (de l'utilisateur), c'est étrange. Peut-être les droits pour macOS au niveau des options de projet qui ne sont pas les mêmes entre RELEASE et DEBUG ?

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 57
    Points : 47
    Points
    47
    Par défaut
    pprem, malheureusement, les droits sont identiques. Cela n'est pas la cause de ce dysfonctionnement.

Discussions similaires

  1. Réponses: 6
    Dernier message: 12/12/2008, 16h42
  2. Réponses: 3
    Dernier message: 28/10/2008, 13h20
  3. problème d'acces à un répertoire sur un serveur
    Par Seinen dans le forum Débuter
    Réponses: 16
    Dernier message: 21/07/2008, 09h40
  4. Probléme d'accé à un répertoire partagé
    Par koKoTis dans le forum Windows XP
    Réponses: 3
    Dernier message: 09/09/2006, 19h25
  5. Réponses: 11
    Dernier message: 26/04/2005, 09h23

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