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 :

Goto autre procedure


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2014
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2014
    Messages : 187
    Points : 45
    Points
    45
    Par défaut Goto autre procedure
    Bojours
    comment je peut faire un saut vers une autre procedure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TForm1.FormCreate(Sender: TObject);
     
    begin
     
    Répéter: 
     
    code code code
    code code code
    code code code
     
    end;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.Image1Click(Sender: TObject);
    begin
    goto Répéter;
    end;
    Merci

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 789
    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 789
    Points : 25 777
    Points
    25 777
    Par défaut
    un for, un while do, repeat until ... pour faire une boucle ce n'est pas ce qui manque

    Et le goto est à bannir, il n'y a aucune raison de l'utiliser dans un code logique

    A lire : Guide Pascal et Delphi VI. Procédures et Fonctions et VIII-B. Structures itératives

    Fait plutôt une FonctionMachin qui est appelé par FormCreate et par Image1Click
    C'est comme cela que l'on met du code en commun par une fonction avec ces paramètres éventuellement.

    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
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Repeter();
    end;
     
    procedure TForm1.Image1Click(Sender: TObject);
    begin
      Repeter();
    end;
     
    procedure fonction Répéter();
    begin
    code code code
    code code code
    code code code
    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

  3. #3
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2014
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2014
    Messages : 187
    Points : 45
    Points
    45
    Par défaut
    merci mais j'ai un code qui se répète a chaque fois dans des endroit différents et des formes différentes
    je voulais pas copier le même code a chaque procédure...
    je voulais faire une appelle a une seul procédure a chaque fois

  4. #4
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 432
    Points : 3 201
    Points
    3 201
    Par défaut
    Bonjour,

    tu mets cette procédure dans une unité (en la déclarant dans la partie interface) et dans les autres tu mets un uses de cette unité.

    Ainsi tu y auras accès dans tes autres unités.

    A+
    Charly

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 789
    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 789
    Points : 25 777
    Points
    25 777
    Par défaut
    Citation Envoyé par ABBAN270 Voir le message
    merci mais j'ai un code qui se répète a chaque fois dans des endroit différents et des formes différentes
    je voulais pas copier le même code a chaque procédure...
    je voulais faire une appelle a une seul procédure a chaque fois
    C'est exactement l'idée d'avoir une fonction, faudrait peut-être nous montrer un peu plus car là on ne comprend pas trop la difficulté, c'est le B.A-BA

    endroit différents et des formes différentes
    Que veux dire "formes différentes" ?

    Est-ce des variantes du même code légèrement différent ?

    C'est ni plus ni moins une phase de refactoring, tu as un code dupliqué, il faut prendre le code dupliqué et voir si il y a des différences, si oui, cela peut faire l'objet d'un ou plusieurs paramètres pour gérer un ou deux cas spéciaux, pas plus, après vaut mieux découper encore plus ou faire plusieurs variantes de la même fonction pour la lisibilité.

    Oui tu as francisé TForm soit des unités différentes.
    et la réponse c'est uses et la fonction dans une unit à part comme proposé par Charly910 et la il faut lire IV-D-1. La notion de projet
    Faudrait peut-être apprendre les bases ?




    Ton intention de mettre en commun du code est tout à fait louable et parfaitement justifié, tout le monde ne s'en soucie pas !

    J'ai déjà repris le code d'un collège 117 fois le même code copié-collé, la différence trois chaines sur 25 lignes.
    J'ai fait une fonction avec trois paramètres, j'ai remplacé les 117 emplacements, j'ai ainsi retiré 2500 lignes.
    Evidemment, développeur médiocre, il en a rajouter d'autres, au moins 20, après n'ayant toujours pas compris comme faire de réutilisation ... et parce qu'il me détestait aussi, il se pensait bon, il a compris qu'il ne l'était pas sur un projet de logistique
    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

  6. #6
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2014
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2014
    Messages : 187
    Points : 45
    Points
    45
    Par défaut
    oui c'est bien compris
    mais j'ai essayer de faire une procédure
    mais elle n'a pas reconnu les objets qui sont déclarer dans l'unité comme dans la photo
    Nom : Capture d’écran 2024-09-26 184408.png
Affichages : 101
Taille : 67,5 Ko
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure Actualiser();
     
    begin
    Table1.Locate('id', i+1,[]);
    Image1.Picture.LoadFromFile(Table1['lien']);
     
     
    end;

    [dcc32 Erreur] Unit1.pas(46): E2003 Identificateur non déclaré : 'Table1'
    [dcc32 Erreur] Unit1.pas(47): E2003 Identificateur non déclaré : 'Image1'

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 789
    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 789
    Points : 25 777
    Points
    25 777
    Par défaut
    c'est la Dépendance à Self soit l'instance du TForm

    C'est un code difficile à mettre en commun mais ça serait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure Actualiser(ATable: TDataSet; const AFieldName: string; AImage: TImage);
    begin
      ATable.Locate('id', i+1,[]);
      AImage.Picture.LoadFromFile(ATable[AFieldName]); 
    end;
    et l'appel depuis le TForm1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Actualiser(Table1, 'lien', Image1);

    Evidement faudra penser à renommer Form1, Table1, Image1 ... sinon tu vas t'y perdre, je suppose que c'est juste un projet d'essai que tu nous montres.
    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

  8. #8
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 789
    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 789
    Points : 25 777
    Points
    25 777
    Par défaut
    J'ajouterais qu'il a des fonctions ou procédures mais qu'il y a aussi des méthodes

    ceci est une procédure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure Actualiser(ATable: TDataSet; const AFieldName: string; AImage: TImage);
    begin
      ATable.Locate('id', i+1,[]);
      AImage.Picture.LoadFromFile(ATable[AFieldName]); 
    end;
    ceci est une méthode (Il y a Self implicite)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.Actualiser(); // Note la déclaration comme pour tes gestionnaires d'évènements
    begin
      Table1.Locate('id', i+1,[]);
      Image1.Picture.LoadFromFile(Table1['lien']); 
    end;
    en réalité le code est compris ainsi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.Actualiser();
    begin
      Self.Table1.Locate('id', i+1,[]);
      Self.Image1.Picture.LoadFromFile(Self.Table1['lien']); 
    end;

    Il te faut comprendre la différence entre du code procédural et du code objet

    FormCreate et Image1Click sont des méthodes de TForm1
    Ce sont aussi ce que l'on appel des gestionnaires d'évènement

    tu dois ajouter une section private en dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    type
      TForm1 = class(TForm)
      ...
       procedure Image3Click(Sender:TObject);
     ...
    private
      procedure Actualiser();
    end;
    Cela ne permettra par de partager du code entre plusieurs TForm mais cela t'aidera à comprendre la différence.

    Et plus tard, tu te diras qu'il existe aussi l'héritage, au lieu d'avoir TForm comme ancêtre, tu peux en mettre un autre ... mais on va attendre pour ce genre de structure même si il est à parier que c'est la plus adéquate.
    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

  9. #9
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2014
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2014
    Messages : 187
    Points : 45
    Points
    45
    Par défaut
    je savais pas que c'est compliqué
    je vais essayer de comprendre le code
    apres je vais tester les codes
    parce que c'est une leçon aujourd'hui
    merci beaucoup

Discussions similaires

  1. [AC-2010] Faire un GoTo d'une procédure à une autre ?
    Par Warwolf dans le forum Access
    Réponses: 5
    Dernier message: 01/12/2015, 16h42
  2. [XL-2003] Deux On Error GoTo dans une procedure
    Par cecyl dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/08/2010, 12h20
  3. GOTO dans une procédure stockée
    Par SergioMaster dans le forum SQL
    Réponses: 10
    Dernier message: 24/03/2009, 20h32
  4. Goto vers une procédure totalement lisible
    Par sechanbask dans le forum Général VBA
    Réponses: 10
    Dernier message: 06/06/2007, 19h22
  5. Passer d'une procédure à l'autre par l'intermédiaire d'un GoTo
    Par trecks dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 09/04/2007, 21h21

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