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

 Delphi Discussion :

Problème appli développée sous seven..


Sujet :

Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Points : 161
    Points
    161
    Par défaut Problème appli développée sous seven..
    Bonjour,

    J'ai développé une application sous XE2 et Seven ultimate 64.
    Lorsque je mets l'exe en mode de compatibilité XP SP3, un message m'indique "Indice hors limite (0)" inexistant sans ce mode.

    Pourriez vous m'apporter votre aide?

    Merci
    Pierre

  2. #2
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Essaie de déterminer à quel endroit du code cela se produit.
    Trace les endroits où tu fais appel à des indices.

    Là il n'y a pas de possibilité de t'aider sans informations supplémentaires
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Points : 161
    Points
    161
    Par défaut
    Merci de ta réponse.

    En fait, il serait plus simple de poser ma question sous une autre forme.
    J'ai compilé une appli avec delphi Xe2.
    Je l'ai envoyée à un testeur qui est Tawanais.
    Je suis sous W7 64 mais compile en 32 bits.
    Lui est en W7 64.
    Il rencontre cette erreur que je ne peux reproduire qu'en mode de comptabilité XP SP3.

    Je soupçonne un problème d'unicode mais ne sais pas comme gérer cela

    Merci de ton aide
    Pierre

  4. #4
    Membre émérite
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 216
    Points : 2 303
    Points
    2 303
    Par défaut
    Bonjour,

    Un problème d'indice renvoi vers une structure de tableau ou de liste, cherche par là. Utilise-tu la liste des paramètres passés par windows a ton application ?

    @++
    Dany

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Points : 161
    Points
    161
    Par défaut
    Bonjour Dany

    De quels paramètres s'agit-il?

    Si cela peut avoir une quelconque utilité, Si je passe en affichage Windows classic, j'ai la même erreur, avec l'affichage Windows 7 basic, tout fonctionne bien chez moi.


    Amicalement
    Pierre

  6. #6
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par Pierre95 Voir le message
    De quels paramètres s'agit-il?
    ParamStr(0) => le nom de l'exécutable
    ParamStr(1) à ParamStr(n) => Les éventuels 1° à n° paramètres

    Sinon, y a t-il dans cette application des tableaux, des listes qui seraient construites à partir des éléments obtenus auprès du système ?
    Philippe.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Points : 161
    Points
    161
    Par défaut
    Merci de la réponse,

    J'utilise de nombreux TStringList qui sont remplis à partir de fichier textes contenant des données séparées par des virgules, mais pas de données sytème.

    Pas de solution en vue.

    Amicalement
    Pierre

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Points : 161
    Points
    161
    Par défaut
    Bonjour,
    Je pense savoir d’où provient l'erreur.
    En fait j'utilise des fichiers texte comme des fichiers INI.
    Leur contenu est structuré comme suit.

    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
    [CODEF4]
    100,400,325,275,200
    200,1190,1100,1000,990
    300,1900,1750,1650,1550
    400,2750,2500,2350,2250
    500,3500,3250,3100,2950
    600,4300,4000,3850,3650
    700,5250,4900,4700,4400
    800,6200,5600,5300,5200
     
    [CODET1]
    100,900
    200,1000
    300,1100
    400,1200
    500,1300
    600,1400
    700,1500
    800,1600
    900,1700
    1000,1800
     
    [CODET2]
    900,600
    1000,700
    1100,800
    1200,900
    1300,1000
    1400,1100
    1500,1200
    1600,1300
    1700,1400
    1800,1500
    Curieusement sans mode de compatibilité, cela fonctionne sans problème.
    Par contre en mode de compatibilité ou en mode affichage Windows basic,
    Les sections ne sont plus reconnues donc, plus lues.

    Comment utiliser la structure de mes fichiers sans la changer mais en les traitant comme fichier texte et non comme fichier INI.

    Merci de vos lumières

    Amicalement
    Pierre

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 74
    Points : 76
    Points
    76
    Par défaut
    Ton exemple de fichier ne correspond pas vraiment à un fichier de type .ini :
    [SECTION_N]
    key1=value1
    ...
    keyX=valueX

    Pour mieux comprendre ce qu'il se passe il faudrait voir le code de lecture de ton fichier texte et de remplissage des TStringList, sinon pour la lecture de fichier texte regardes AssignFile, Reset, ReadLn, CloseFile

    Si l'erreur "Indice hors limite (0)" intervient sur une des StringList cela voudrait dire qu'elle est vide; peut-être un test sur la propriété Count avant tout appel du genre MyStringList[i] te permettrait de situer le problème (comme le dit Linkin le mieux serait de tracer au niveaux de ces appels ou d'encapsuler les appels avec des try...except).
    Une idée, mais peut-être ça n'a rien à voir, le changement de mode ne modifie-t-il pas ton séparateur de valeur à la lecture du fichier; avec des fichiers .ini et sur des machines de différents pays j'ai déjà eu des soucis à cause de DecimalSeparator qui selon les pays est ',' ou '.'

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Points : 161
    Points
    161
    Par défaut
    Merci de ta réponse:

    Voici comment je lis les fichiers:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     With TMemIniFile.Create('FuelProfile.txt') do
          begin
            ReadSectionValues('LEST9',aList);
            Free;
    Cette section contient :
    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
    [LEST9]
    53.5,0,0,0,0,0,0,0,0,0,0
    53.6,210,210,220,220,220,220,230,230,240,250
    53.7,420,430,430,440,440,450,460,470,480,490
    53.8,630,640,650,660,660,670,690,700,720,740
    53.9,840,850,860,870,890,900,920,940,960,980
    54.0,1050,1070,1080,1090,1110,1120,1150,1170,1200,1230
    54.1,1260,1280,1300,1310,1330,1340,1380,1410,1440,1480
    54.2,1470,1490,1510,1530,1550,1570,1610,1640,1680,1720
    54.3,1680,1700,1730,1750,1770,1790,1840,1880,1920,1970
    54.4,1890,1920,1940,1970,1990,2020,2070,2110,2160,2210
    54.5,2100,2130,2160,2190,2210,2240,2300,2350,2400,2460
    54.6,2310,2340,2370,2400,2430,2460,2520,2580,2640,2700
    54.7,2520,2560,2590,2620,2660,2690,2750,2820,2890,2950
    54.8,2730,2770,2810,2840,2880,2910,2980,3050,3130,3200
    54.9,2950,2980,3020,3060,3100,3140,3210,3290,3370,3440
    55.0,3160,3200,3240,3280,3320,3360,3440,3520,3610,3690
    Toutes les autre sections sont bien lues quelque soit le mode.
    Je pense que cela provient du fait que la première chaine contient un séparateur décimal '.'.
    Il est bien lu en mode W7 mais pas en mode Windows classic ni en compatibilité XP SP2.

    Que puis faire s'il vous plait?

    Cordialement
    Pierre

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 74
    Points : 76
    Points
    76
    Par défaut
    Avant le ReadSectionValues tu peux ajouter un test sur le séparateur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ( DecimalSeparator <> '.' ) then DecimalSeparator:= '.';

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Points : 161
    Points
    161
    Par défaut
    Merci,

    Je teste et reviens vers vous.

    Cordialement
    Pierre

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Points : 161
    Points
    161
    Par défaut
    Bonsoir,

    Pas de changement avec ta proposition.

    Une autre idée?

    Comme seules deux sections posent problème sur un trentaine, peut-être puis-je les placer dans de vrais fichiers texte..?

    Cordialement
    Pierre

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 74
    Points : 76
    Points
    76
    Par défaut
    Pas de changement avec ta proposition.
    Je m'en doutais un peu, ce genre d'erreur aurait pu arriver avec un ReadFloat mais pas avec ReadSectionValues.

    As-tu vérifié ce qu'il y avait dans aList dans les différents mode après ReadSectionValues('LEST9',aList); genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    With TMemIniFile.Create('FuelProfile.txt') do
    begin
      ReadSectionValues('LEST9',aList);
      Showmessage(aList.Text);
      Free;

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Points : 161
    Points
    161
    Par défaut
    En effet, dans le mode avec erreur, la liste est vide.

    Pierre

  16. #16
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Salut,

    Juste une petite question avant une proposition.

    Sur ton poste en W7 64 qui fonctionne, peux-tu changer tes paramètres régionaux : si tu as un . pour le séprateur de décimale met une virgule et vice et versa, ensuite refais un test.

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Points : 161
    Points
    161
    Par défaut
    Bonjour,

    J'ai testé ce conseil et le programme fonctionne quelque soit le séparateur régional.

    Cordialement
    Pierre

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Points : 161
    Points
    161
    Par défaut
    Bonjour,

    Je suis en train de convertir les section du fichier *.ini en autant de fichiers *.txt.
    Je pense que cela devrait marcher.

    Je reviens vous conter mes résultats

    Cordialement
    Pierre

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Points : 161
    Points
    161
    Par défaut
    Re bonjour,

    Je reviens vous remercier chaleureusement pour vos précieux conseils et le temps que avez bien voulu consacrer à mon problème.

    Après avoir converti toutes les section (53) en fichiers textes individuels et utilisé
    aList.LoadFormFile
    sur chacun d'entre eux.
    Tout fonctionne dans tous les modes.

    Il ne me reste plus qu'à envoyer l'appli à jour à mon testeur Tawanais pour vérifier que ça fonctionne aussi chez lui.

    Encore merci
    (Je mets la balise RESOLU)

    Très Cordialement
    Pierre

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

Discussions similaires

  1. Problème de lancement sous SEVEN
    Par Duke_MBA dans le forum Windows Forms
    Réponses: 4
    Dernier message: 08/07/2014, 16h44
  2. Réponses: 8
    Dernier message: 21/11/2013, 13h43
  3. Réponses: 6
    Dernier message: 15/06/2012, 11h14
  4. [CR 10] Problème lecture clé sous Seven 64bits
    Par Potus dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 17/11/2011, 10h23
  5. Réponses: 3
    Dernier message: 29/09/2010, 10h28

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