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 :

message record pointer


Sujet :

Langage Delphi

  1. #1
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 984
    Points : 1 419
    Points
    1 419
    Par défaut message record pointer
    bonjour, je bloque sur un message du compilateur. J'ai beau chercher je ne comprend pas pour l'instant

    [DCC Erreur] Updator.pas(397): E2066 Opérateur ou point-virgule manquant
    ce qui correspond à cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      ConfUpdator := PConfUpdator(Message.WParam)^;
    j'ai un composant qui crée un thread avec en paramètre un record que je stock dans le thread avec un pointer,
    le thread fait son travail puis envoie un message au composant avec l'adresse du pointer
    pour mettre à jour le record du composant avant de libéré le pointer et sortir du thread

    si il y a mieux je prend tout les conseils!
    je fait comme sa car pendant que le thread travaille des données du record peuvent changer.

    le code raccourci:
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    Unit Updator;
     
    Interface
     
    Uses
      Classes,
    {$IFDEF MSWINDOWS}
      Windows,
    {$ENDIF}
      SysUtils, Dialogs, Messages, Forms;
     
    Const
      WM_INFOSUPDATE = WM_USER + 1;
     
    Type
      TConfUpdator = Record
        NewVersion: String;
      End;
     
      TThreadUpdater = Class(TThread)
      Private
        MainHandle:   HWND;
        PConfUpdator: ^TConfUpdator;
        DownUpdate:   Boolean;
      Protected
        Procedure Execute; Override;
      Public
        Constructor Create(AMainHandle: HWND; AConfUpdator: TConfUpdator);
        Destructor Destroy; Override;
      End;
     
      TUpdator = Class(TComponent)
      Private
        Handle:        HWND;
        ConfUpdator:   TConfUpdator;
        ThreadUpdater: TThreadUpdater;
      Protected
        Procedure WMInfosUpdate(Var Message: TMessage); Message WM_INFOSUPDATE;
      Public
        Procedure CheckUpdate;
        Constructor Create(AOwner: TComponent); Override;
        Destructor Destroy; Override;
      Published
        Property NewVersion: String Read ConfUpdator.NewVersion;
      End;
     
    Implementation
     
    { TThreadUpdater }
     
    Constructor TThreadUpdater.Create(AMainHandle: HWND; AConfUpdator: TConfUpdator);
    Begin
      Inherited Create(False);
      new(PConfUpdator);
      FreeOnTerminate := True;
      MainHandle      := AMainHandle;
      PConfUpdator^   := AConfUpdator;
    End;
     
    Destructor TThreadUpdater.Destroy;
    Begin
      dispose(PConfUpdator);
    End;
     
    Procedure TThreadUpdater.Execute;
    Begin
      //on met à jour les propriétés du composants avec les infos récupéré
      SendMessage(MainHandle, WM_INFOSUPDATE, Integer(@PConfUpdator), 0);
    End;
     
    { TUpdator }
     
    Constructor TUpdator.Create(AOwner: TComponent);
    Begin
      Inherited Create(AOwner);
      Handle := AllocateHWnd(AllMsg);
      With ConfUpdator Do
      Begin
        NewVersion := '';
      End;
    End;
     
    Destructor TUpdator.Destroy;
    Begin
      Inherited;
      DeallocateHWnd(Handle);
    End;
     
    Procedure TUpdator.WMInfosUpdate(Var Message: TMessage);
    Var
      PConfUpdator: ^TConfUpdator;
    Begin
      ConfUpdator := PConfUpdator(Message.WParam)^;
    End;
     
    Procedure TUpdator.CheckUpdate;
    Begin
      ThreadUpdater := TThreadUpdater.Create(Self.Handle, ConfUpdator);
    End;
     
    End.
    merci.

  2. #2
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 292
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 292
    Points : 1 944
    Points
    1 944
    Par défaut
    Le problème vient du fait que PConfUpdator n'est pas un type (il n'a pas été défini comme tel, mais comme variable).
    (de plus il est redéclaré dans cette procédure, par rapport à la variable de l'objet)

  3. #3
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 984
    Points : 1 419
    Points
    1 419
    Par défaut
    je ressent un grand moment de solitude la , merci pour ton aide! Je met résolu.

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

Discussions similaires

  1. probleme FTP message record have been truncated
    Par plamaison dans le forum AS/400
    Réponses: 5
    Dernier message: 19/08/2010, 15h40
  2. Réponses: 3
    Dernier message: 13/02/2009, 12h39
  3. Réponses: 2
    Dernier message: 21/02/2007, 10h00

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