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 éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    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 ?

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    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 éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    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 ?

  4. #4
    bjl
    bjl est déconnecté
    Membre chevronné 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
    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 éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    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.

+ 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