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# Discussion :

Comportement GetCommandLineArgs bizare


Sujet :

C#

  1. #1
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut Comportement GetCommandLineArgs bizare
    Bonjour

    Voici un bug pas trivial

    Apres des heures de recherche pour comprendre pourquoi notre application ne traitait pas correctement les arguments de lancement sur certaines machines :


    Air connu

    - Bien bien sur que ca marche
    - Mais non ca ne marche pas
    - Mais enfin que faites vous ?
    - Il doit y avoir un probleme sur votre machine ....





    Bon j'ai trouvé le bingz mais je ne sait pas d'ou ca vien et ce que je peux faire


    Sur certaines machines,

    GetCommandLineArgs()

    Rends le full path normal

    c:\Documents and Settings\Bara and Co\Desktop\Dunkerque.mmdl
    Sur d'autre cela rends un full path "a l'ancienne" tronque

    C:\DOCUME~1\BARAAN~1\Desktop\DUNKER~1.MMD

    Quelqu'un connait ca ?

  2. #2
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Cha ?

    Citation Envoyé par msdn
    Windows 98, Windows Millennium Edition Platform Note:

    The name of the executable file includes the path. Long file names (non-8dot3 names) can be shortened to their 8dot3 representation.
    http://en.wikipedia.org/wiki/8.3_filename

  3. #3
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    J'ai deux machines XP Pro

    Qui me rendent des resultats différents ?

  4. #4
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut Nuance
    Nuance ..

    Une est une version 2002 SP 2 (mauvais)

    l'autre est une version 2002 SP 3 (correct)

    C'est quand meme un gros bug !

    Mon probleme c'est que je devrais le moyen de recuperer l'extension reelle (.mmdl) qui est tronquée avec cette méthode !!

  5. #5
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par olibara Voir le message
    Mon probleme c'est que je devrais le moyen de recuperer l'extension reelle (.mmdl) qui est tronquée avec cette méthode !!
    Oui c'est pour ça le 3 dans 8.3

    Mais oui je comprends ton soucis, surtout que ce n'est pas précisé dans la MSDN à propos de XP SP2

  6. #6
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Et avec Environment.CommandLine ça te donne pareil ?

  7. #7
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut

    Environnement.Commandline; c'est pareil !!

    Je percoit parfaitement le concept 8.3 ! J'ai fait du DOS au biberon

    Mais le probleme ici semble lié au FW avec SP2 quand le path vient d'un open systeme !

  8. #8
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut Acrobatie
    Je crois que je suis condamné a faire des acrobaties

    J'ai trouvé ca

    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
    using System;
    using System.Runtime.InteropServices;
    using System.Text;
     
    public class _Main
    {
     
              [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
     
              public static extern int GetShortPathName(
     
                       [MarshalAs(UnmanagedType.LPTStr)]
     
                       string path,
                       [MarshalAs(UnmanagedType.LPTStr)]
                       StringBuilder shortPath,
                       int shortPathLength
                       );
     
     
              public static void Main()
     
              {
                   StringBuilder shortPath = new StringBuilder(255);
                   GetShortPathName(@"D:\My Temp\ResourseProvider\sql.txt", shortPath, shortPath.Capacity);
                   Console.WriteLine(shortPath.ToString());
              }
     
    }

  9. #9
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut La solution
    Voila le bricolage rapide permettant de contourner ce bug


    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
       [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
        public static extern int GetLongPathName(
                 [MarshalAs(UnmanagedType.LPTStr)]
                       string path,
                 [MarshalAs(UnmanagedType.LPTStr)]
                       StringBuilder longPath,
                 int longPathLength
                 );
     
     
        private void OnFileNew(bool onInitialize)
        {
     
          if (Environment.GetCommandLineArgs().Length == 2 && onInitialize)
          {
            string arg = Environment.GetCommandLineArgs()[1].ToString();
            string ext = Path.GetExtension(arg);
            if (ext.Length <= 4)
            {
              StringBuilder longPath = new StringBuilder(255);
              GetLongPathName(arg, longPath, longPath.Capacity);
              if (longPath.Length > 0)
              {
                arg = longPath.ToString();
              }
            }
    // etc...

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

Discussions similaires

  1. Comportement bizare sur une requete
    Par pschiit dans le forum Langage SQL
    Réponses: 1
    Dernier message: 24/02/2011, 10h53
  2. Comportement Bizare PostBack
    Par Alexis35 dans le forum VB.NET
    Réponses: 1
    Dernier message: 15/02/2011, 14h24
  3. [XL-2002] Fonction "SI" se comporte "BIZAREMENT"
    Par Mielure dans le forum Excel
    Réponses: 7
    Dernier message: 04/06/2009, 06h14
  4. Comportement bizare avec webutil et excel
    Par squallJ dans le forum Forms
    Réponses: 3
    Dernier message: 01/10/2007, 17h52
  5. [VS 2003][C] Comportement bizare de fopen
    Par chronos dans le forum Visual C++
    Réponses: 2
    Dernier message: 18/07/2007, 19h27

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