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 averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 58
    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 : 344
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
    Par défaut
    Bonsoir

    Le sous-dossier "Imagelys MS" existe bien ?

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

    Informations forums :
    Inscription : Février 2003
    Messages : 58
    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
    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 averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 58
    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 confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 226
    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 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 586
    Billets dans le blog
    65
    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
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 074
    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 :
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  9. #9
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 074
    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 ???
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

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

    Informations forums :
    Inscription : Février 2003
    Messages : 58
    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
    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 averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 58
    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
    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 averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 58
    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