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 :

Syntaxe oubliée !


Sujet :

Delphi

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 540
    Points : 123
    Points
    123
    Par défaut Syntaxe oubliée !
    Bonjour à tous

    Dire que j'ai oublié ça :/

    Pour une TStringList, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    if ALLOWED Lst_Machin ?
    Je ne sais plus. Mes neurones se crapahutent ??
    Merci !

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 396
    Points : 640
    Points
    640
    Par défaut
    j'imagine que tu veux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if assigned(Lst_Machin) then ...

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 563
    Points : 25 165
    Points
    25 165
    Par défaut
    Evidemment, faut que le valeur soit mise à nil

    Si c'est un membre d'un objet, l'initialisation de l'instance, le fera implicitement
    Par exemple Lst_Machin est un membre privé dé TForm, cela sera à nil après le Create

    Si c'est une variable locale/globale, faut le faire explicitement, sinon cela contiendra une valeur aléatoire (la compilation RELEASE provoquant plus de code aléatoire que DEBUG à cause d'un code plus compact)
    Par exemple Lst_Machin est déclaré en var après implementation, ne pas oublier de mettre à nil



    Si tu reprends un code dégueux qui n'a pas bien fait les choses, à titre de débogage, tu dois chasser les objets non initialisés à nil

    Je me suis fait en D6, une fonction pour chopper des objets libérés mais sans être mis à nil ... ça c'est la pire source d'erreur possible, conserver une référence invalide.
    j'avais à terme tout remplacer par du FreeAndNil pour les variables globales ou membres, inutile pour les locales à 99% du temps

    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
    {* -----------------------------------------------------------------------------
    La Fonction RealAssigned vérifie qu'un objet est non nul et vérifie si il est véritablement allouée
    @param Obj une référence variable d'un objet
    @return Assigned renvoie false si la valeur nil est attribuée à P ou incorrectement instancié, et true dans le cas contraire.
    ------------------------------------------------------------------------------ }
    function RealAssigned(var Obj): Boolean;
    begin
      Result := Assigned(Pointer(Obj));
      if Result then
      begin
        try
          Result := (TObject(Obj) is TObject(Obj).ClassType) and SameText(TObject(Obj).ClassName, TObject(Obj).ClassType.ClassName);
          if Result then
          begin
            Result := not IsBadReadPtr(Pointer(Obj), TObject(Obj).InstanceSize);
            if Result then
            begin
              Result := not IsBadWritePtr(Pointer(Obj), TObject(Obj).InstanceSize);
              if not Result and IsRunInDebugger then
                OutputDebugString('RealAssigned : IsGoodReadPtr but IsBadWritePtr !');
            end
            else
              if IsRunInDebugger then
                OutputDebugString('RealAssigned : ClassName OK but IsBadReadPtr !');
     
          end;
        except
          on E: Exception do
            Result := False;
        end;
      end;
    end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 540
    Points : 123
    Points
    123
    Par défaut
    Bonjour, ShaireLeTroll !

    C'était ça : ASSIGNED !!

    Merci

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

Discussions similaires

  1. [syntaxe] Gerer les variables dans une requete
    Par rastapopulos dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 15/04/2003, 12h53
  2. Syntaxe requete
    Par Chipolata dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/03/2003, 14h22
  3. [Syntaxe] Action simultanée sur plusieurs élements
    Par FranT dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/03/2003, 20h20
  4. Syntaxe TASM <-> MASM
    Par LFC dans le forum Assembleur
    Réponses: 3
    Dernier message: 28/02/2003, 15h56
  5. [VB6] [Syntaxe] Fonction renvoyant un tableau d'objets
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/10/2002, 15h33

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