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 :

Type TFont dans un record


Sujet :

Langage Delphi

  1. #1
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut Type TFont dans un record
    Bonjour à tous,

    Dans une unité, j'ai un record avec plusieurs variable dont une qui est de type Tfont:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      tElement = record
        id: Integer;
        valeur: String;
        police: TFont;
      end;
    Sur une form, j'initialise ce record avec un TFontDialog:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    elt: tElement;
    ...
    elt.police := FontDialog1.Font;
    Sur une autre form, j'utilise ce record (qui est dans un tableau maintenant) pour formater un texte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    tabElements: array of tElement;
    ...
    texte := tabElements[id].valeur; // id=0, là, il trouve bien la valeur
    Buffer.Font := tabElements[id].police; // Là, il pête, il perds toutes les valeurs
    Et c'est ici que ça pête (l'indice du tableau existe bien vu qu'il trouve les autres élements du record), il me met:
    Violation d'accès à l'adresse...

    Qu'est ce qu'il se passe ?
    David.

  2. #2
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Je crois qu'il te faut allouer les cellules de ton tableau, car c'est un tableau ouvert. Contrairement a

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array[0..5] of TElement
    qui est pré-alloué.

    Regarde du coté de SetLength.
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  3. #3
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut
    Bonjour TicTacToe,

    Non, ça ne vient pas de ça car je fais bien un SetLength(tabElements,lTabElements); de plus, il trouve bien les premiers eléments du record.

    Tout marche à merveille si je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Buffer.Font.size := 12; //tabElements[id].police.size;
    contrairement à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Buffer.Font.size := tabElements[id].police.size;
    En fait, je viens de voir (ce code est dans un onPaint) qu'il passe bien la première fois mais c'est à la deuxième, qu'il pête.

    Faut-il liberer quelque chose ?
    David.

  4. #4
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    bonjour,

    si ta FontDialog1 a été détruite, c'est normal.


    essaie avec

    elt.police := Tfont.create;
    elt.police.assign( FontDialog1.Font);

  5. #5
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut
    Bonjour bjl,

    J'ai un peu honte sur ce coup la...

    C'était bien ça, je voyait juste Tfont comme un record et non comme un objet.

    Merci à vous.
    David.

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

Discussions similaires

  1. Affichage dans les records type
    Par syntaxis dans le forum Salesforce.com
    Réponses: 1
    Dernier message: 16/09/2013, 08h35
  2. Champs de type XML dans une base de données
    Par Flocodoupoil dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 07/07/2004, 18h57
  3. insertion d'un type date dans une table access
    Par monstour dans le forum ASP
    Réponses: 7
    Dernier message: 18/06/2004, 16h57
  4. informations sur le type interval dans interbase
    Par devalender dans le forum InterBase
    Réponses: 6
    Dernier message: 03/06/2004, 10h29
  5. utilisation de "LIKE" avec un type datetime dans r
    Par ericmart dans le forum Langage SQL
    Réponses: 8
    Dernier message: 06/11/2003, 14h58

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