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 :

Incrémentation d'un entier


Sujet :

Delphi

  1. #1
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2015
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 252
    Points : 272
    Points
    272
    Par défaut Incrémentation d'un entier
    Bonjour,

    Pourquoi le code suivant me renvoie-t-il une erreur de compilation ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    begin
      with GridIn do begin
        RowCount := RowCount +1;
        Cells[1, RowCount -1] := 'In01';
        Cells[2, RowCount -1] := 'Text In01';
        inc(RowCount);
        Cells[1, RowCount -1] := 'In02';
        Cells[2, RowCount -1] := 'Text In02';
      end;
    end;
    [dcc32 Erreur] Unit1.pas(35): E2064 La partie gauche n'est pas affectable
    La ligne 35 est inc(RowCount) Quelle partie gauche ? RowCount ? Si tel est le cas, pourquoi RowCount := RowCount +1 fonctionne-t-il et l'autre non ?

    Merci.

  2. #2
    Membre chevronné

    Homme Profil pro
    au repos
    Inscrit en
    Février 2014
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2014
    Messages : 429
    Points : 1 884
    Points
    1 884
    Par défaut
    Bonjour.

    La fonction Inc n'admet que des variables ordinales comme : integer, char, pointer, enumération.
    Elle ne peut pas être utilisée pour des propriétés d'un objet.

    Cordialement
    Thierry

    EDIT : pratiquement grillé par Barbibulle

  3. #3
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Inc ne peut pas fonctionner sur des propriétés.

    C'est d'ailleurs dans l'aide sur Inc
    Avertissement : Vous ne pouvez pas utiliser Inc sur des propriétés car elle modifie le paramètre.
    Les propriétés ont le plus souvent un accesseur en lecture et un autre en écriture. Le Inc va utiliser celui en lecture pour directement le modifier ce qui pose problème...


    Edit :
    Je n'ai pas été assez rapide ...

  4. #4
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2015
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 252
    Points : 272
    Points
    272
    Par défaut
    Ah... OK.

    Quand j'écris RowCount := RowCount +1 en réalité j'affecte à la propriété RowCount, la valeur de cette même propriété incrémentée de 1.

    Compris. Merci.

  5. #5
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 556
    Points : 3 929
    Points
    3 929
    Par défaut
    Salut à tous

    Plus généralement, il n'est pas possible de passer une propriété dans un paramètre variable d'une procédure (var...), car les accesseurs peuvent être des routines (fonction, procédure). Une propriété ne doit pas être considérée comme une variable.

    Cdlt

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

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

Discussions similaires

  1. Entier qui s'incrément automatiquement.
    Par Abdelouahid_alaoui dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 13/05/2014, 17h00
  2. Réponses: 6
    Dernier message: 27/08/2013, 19h14
  3. Incrémenter un string qui contient un entier
    Par itokia dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 10/06/2011, 11h56
  4. Réponses: 7
    Dernier message: 28/09/2007, 10h23
  5. Réponses: 7
    Dernier message: 16/02/2006, 08h49

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