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 :

Procedure et procedure (TObjet) Aide svp


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Directeur Technique
    Inscrit en
    Décembre 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur Technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2013
    Messages : 9
    Par défaut Procedure et procedure (TObjet) Aide svp
    Bonjour,

    Mon problème est le suivant: j'ai une procédure simple non "objet" qui doit faire appel à une procédure (ASender: TObject). J'ai ajouté le nom de la "form"suivi d'un point, D7 ne détecte pas d'erreur à la compilation, mais donne une erreur lors de l’exécution. voici une partie du code:

    Merci d'avance pour votre aide.

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     var
      FormPhidget: TFormPhidget;
     
     //AdressIp : string[16];
      //portChar : integer;
      IO        : ARRAY[1..MaxIOchannel] OF Boolean;
      DAC       : ARRAY[1..MaxDACchannel] OF Integer;
      AD        : ARRAY[1..MaxADchannel] OF Integer;
      DA        : ARRAY[1..MaxDAchannel] OF Integer;
      InputDevice :ARRAY[1..MaxIOchannel] OF TIOdevice;
      OutputDevice:ARRAY[1..MaxIOchannel] OF TIOdevice;
      NumPhidgetInterfaceKit: byte;
     
      PROCEDURE SetIOchannel(Channel_no: TIOchannel);
      PROCEDURE ClearIOchannel(Channel_no: TIOchannel);
       {6 BIT DAC CONVERTER PROCEDURES}
      PROCEDURE OutputDACchannel(Channel_no: TDACchannel ; Data: Integer);
      PROCEDURE ClearDACchannel(Channel_no: TDACchannel);
      PROCEDURE SetDACchannel(Channel_no: TDACchannel);
     
     
    implementation
     
    {$R *.dfm}
     
    {	Set one IO channel and update the 'IOdata' & 'IO' array.
    	--------------------------------------------------------
    }
    procedure TFormPhidget.SetIoChanelClick(Sender: TObject);
    begin
    SetIOchannel(10);
     
    end;
     
     
    PROCEDURE SetIOchannel(Channel_no: TIOchannel);
    var
    I, X, Y: byte;
    BEGIN
    	{Calculate module no}
     for I:=1 to 6 do begin
      if (OutputDevice[I].Actif) and (Channel_no >= OutputDevice[I].StartIO)
          and (Channel_no >= OutputDevice[I].EndIO) then
           begin
            X:=OutputDevice[I].Module;
            Y:=Channel_no-OutputDevice[I].StartIO-1;
     :fleche:   TPhidgetInterfaceKit(FormPhidget.findComponent('PhidgetInterfaceKit'
            +IntToStr(X))).OutputState[Y]:=true;
          	{Data for correct IOchannel to set}
            IO[Channel_no]:=true;
      :fleche:   FormPhidget.Memo1.Lines.Add('IO['+IntToStr(Channel_no)+'] = true');
          end;
      end;
     
    	{Set IOchannel}
    END;

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 969
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 969
    Par défaut
    FormPhidget n'est pas assigné.
    Regarde où et comment est créé cette instance de TFormPhidget.

  3. #3
    Membre habitué
    Homme Profil pro
    Directeur Technique
    Inscrit en
    Décembre 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur Technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2013
    Messages : 9
    Par défaut
    Merci Andnotor,

    Je suis débutant, je ne comprends pas bien ta réponse, ;-( Ce que je détecte lors de l'arrêt du programme c'est FormPhiget=nil et FormPhidget.Memo1= valeur inaccessible
    FormPhidget: TFormPhidget; est déclaré dans VAR en premier, et TFormPhidget = class(TForm), Memo1: TMemo sont déclarés un peu plus haut dans TYPE.

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 969
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 969
    Par défaut
    Tu devrais retrouver quelque part FormPhidget := TFormPhidget.Create() ou Application.CreateForm(TFormPhidget, FormPhidget).

  5. #5
    Membre habitué
    Homme Profil pro
    Directeur Technique
    Inscrit en
    Décembre 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur Technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2013
    Messages : 9
    Par défaut
    En effet, je trouve : dans la partie "Program", mais je ne comprends pas le problème.

    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
    program DjSys2014;
     
    uses
      Forms,
      UnitMain in 'Units\UnitMain.pas' {MainForm},
     ....
      PhidgetUnit in 'Units\PhidgetUnit.pas' {FormPhidget};
     
    {$R *.res}
     
    begin
      Application.Initialize;
      Application.Title := 'DjSys2014';
      Application.CreateForm(TMainForm, MainForm);
      Application.CreateForm(TFormPhidget, FormPhidget);
     ...
      Application.Run;
    end.

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 969
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 969
    Par défaut
    La création est là

    Est-ce que MainForm fait appel à SetIOchannel depuis son événement OnCreate ?

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

Discussions similaires

  1. Procedure TsqL Besoin d'aide
    Par ggcourtois dans le forum ASP
    Réponses: 1
    Dernier message: 30/04/2008, 00h36
  2. procedure de procedure de procedure
    Par edenyorke dans le forum C
    Réponses: 6
    Dernier message: 18/10/2006, 11h36
  3. Procédure dans procédure
    Par molesqualeux dans le forum Langage
    Réponses: 4
    Dernier message: 05/01/2005, 23h54

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