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 :

[D7] Déclarations procédure dans une unité globale


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 17
    Points : 16
    Points
    16
    Par défaut [D7] Déclarations procédure dans une unité globale
    Bonjour, j'ai un petit problème de syntaxe, je m'explique:

    J'ai 3 unité, deux sont des Forms et la troisième sert juste à déclaré tout ce qui est utilisé par les deux Forms (Procédure, etc...).
    Dans cette troisième Unité je déclare une procédure d'écriture dans un fichier .ini, seul problème je ne vois pas comment y mettre les Type (Exemple: EdInstance.Text)qui sont spécifique au Unité 1 et 2 avec cette syntaxe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    EdNameServer.Text := wIniFile.ReadString(_SECTION_OPTIONS,_IDENT_SQLSERVERNAME, '(local)' );
    J'ai essayé de la mettre dans un identifiant mais j'ai cette erreur "[Error] Unit3.pas(37): Left side cannot be assigned to".

    Dans chaque Unité j'appelle les deux autres (Unité1 appel 2 et 3 etc...), cela ne viendrais pas de ces appels qui serait mal placés?

    Comment faire?

    Merci d'avance !

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 447
    Points : 24 844
    Points
    24 844
    Par défaut
    Si tu isoles le code, je te déconseille de faire référence à un control d'une TForm, cela rend tes séparations peu utile voire inutilement complexe !

    Tu oublies que le Self est implicite dans le méthodes d'un objet comme une TForm

    Par exemple, toutes ces lignes sont semblables

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      // Parfaitement identique
      ShowMessage(EdNameServer.Text);
      ShowMessage(Self.EdNameServer.Text);
     
      // Form1 est une variable globale dans une construction simpliste avec une seule instance de TForm1,
      // il y a de grande chance que Form1 soit égale à Self 
      // MAIS il y a un risque qu'il soit différent selon comment sont gérés les instances !
      ShowMessage(Form1.EdNameServer.Text); // Très dangereux d'utiliser cette variable globale si l'on ne maitrise pas les instances !
    end;
    Si tu fais une fonction en dehors de la classe, tu dois explicitement indiquer l'instance
    Mais encore une fois l'utilisation de cette instance globale doit être fait en toute maitrise, je ne le fais jamais pour ma part, je supprime souvent cette variable inutile, seule la MainForm en conserve une par obligation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure ProcedureEnDehors();
    begin
      ShowMessage(Form1.EdNameServer.Text);
    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

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 13/08/2012, 18h15
  2. Regroupage des fonctions et procédures dans une unité
    Par gilardino dans le forum Débuter
    Réponses: 3
    Dernier message: 15/04/2008, 01h58
  3. Comment appeler une procédure dans une autre unité ?
    Par michel71 dans le forum Langage
    Réponses: 1
    Dernier message: 19/09/2007, 16h27
  4. Réponses: 11
    Dernier message: 08/02/2006, 16h59
  5. Réponses: 9
    Dernier message: 09/11/2005, 11h53

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