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 :

Vérification 'Null terminated strings'


Sujet :

Langage Delphi

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 321
    Points : 88
    Points
    88
    Par défaut Vérification 'Null terminated strings'
    Bonjour,
    J'ai une questions de comprehension et voudrais savoir s'il faut obligatoirement faire une vérification de la longueur du string avant de faire afficher le caractère.

    Example:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    var
    Text : string;
    ...
     
    Text := 'Hallo';
    if Text[5] := 'o' then ...
     
    // Dois-je ajouter cette ligne if length(Text) <= 5 then
    if Text[12] = 'o' then ...
    Merci et bonne journée
    Salutations

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 864
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 864
    Points : 13 700
    Points
    13 700
    Par défaut
    Un indice hors limite égal violation d'accès.
    Oui, il faut contrôler la longueur de la chaîne.

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 321
    Points : 88
    Points
    88
    Par défaut
    OK, mais comment ce fait-il en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if Text[12] = 'o' then ...
    que je n'est aucune erreurs, de violation d'accès ?

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 864
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 864
    Points : 13 700
    Points
    13 700
    Par défaut
    Si la chaîne était vide (nil) tu l'aurais
    Là, c'est surtout un coup de chance, mais des problèmes sporadiques futurs assurés qui seront très difficiles à débugger avec de toute façon un résultat qui ne veut rien dire.

  5. #5
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Points : 1 448
    Points
    1 448
    Par défaut
    Citation Envoyé par Ardely Voir le message
    OK, mais comment ce fait-il en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if Text[12] = 'o' then ...
    que je n'est aucune erreurs, de violation d'accès ?
    Text[12] va regarder 12 caractères plus loin que le debut de ta chaine, peu importe qu'elle fasse cette taille ou pas, il va te retourner ce qu'il y a à cet endroit de la mémoire.
    Par contre, si tu coche "verification des limites" et "verification des debordements" dans les options du projet (projet->options->compilateur dans Delphi7), alors là il plantera sur la ligne en question.
    EDIT : ces options ralentissent considérablement l’exécution du programme.

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

Discussions similaires

  1. Vérification sur un String
    Par L4BiN dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 25/10/2007, 16h13
  2. Adresse d'une chaine null terminated
    Par zitoune92 dans le forum Delphi
    Réponses: 3
    Dernier message: 02/04/2007, 10h18
  3. convertir un type null en string (re)
    Par pierrot67 dans le forum Bases de données
    Réponses: 8
    Dernier message: 01/01/2007, 20h27
  4. Erreur de conversion de type Null en String
    Par navis84 dans le forum Bases de données
    Réponses: 3
    Dernier message: 26/07/2005, 16h25
  5. Null terminated string
    Par VoLc0m dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 10/05/2005, 12h06

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