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 :

type incorrect " NativeInt"


Sujet :

Langage Delphi

  1. #1
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    744
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 744
    Points : 500
    Points
    500
    Par défaut type incorrect " NativeInt"
    bonjour a tous,

    Toujours à la recherche d'une solution pour le post précédant, j'essaye le bout de code ci-dessous.
    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
    unit frmMiniBrowser;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, OleCtrls,  ExtCtrls, SHDocVw;
     
    type
      TForm26 = class(TForm)
        WebBrowser1: TWebBrowser;
        Button1: TButton;
        procedure FormDestroy(Sender: TObject);
        procedure FormCreate(Sender: TObject);
     
      private
    { Private declarations }
      public
    { Public declarations }
      end;
     
    {$R *.DFM}
     
    var
    HookID: THandle;
    DisableRButton: boolean;
    Form1: TForm;
     
    implementation
    //------------------------------------------------------------------------------
    function MouseProc(nCode: integer; wParam, lParam: longint): longint; stdcall;
     
          function GetClassNameEnh(Handle: Hwnd): string;
          var
             ClassName: PChar;
             Buffer: integer;
          begin
               Buffer := 40;
               getmem(ClassName, Buffer);
               windows.GetClassName(Handle, ClassName, Buffer);
               Result := ClassName;
               Freemem(ClassName);
          end;
     
    var P: TPoint;
    begin
         if (nCode < 0) then
         Result := CallNextHookEx(HookID, nCode, wParam, lParam)
         else
         if DisableRButton and ((wParam = WM_RBUTTONDOWN) or (wParam = WM_RBUTTONUP)) then
         begin
              GetCursorPos(P);
              if Pos('Internet Explorer_', GetClassNameEnh(WindowFromPoint(P))) <> 0 then
              Result := HC_SKIP
              else
              Result := CallNextHookEx(HookID, nCode, wParam, lParam);
         end
         else
         Result := CallNextHookEx(HookID, nCode, wParam, lParam);
    end;
    //------------------------------------------------------------------------------
    procedure TForm26.FormCreate(Sender: TObject);
    begin
         DisableRButton := True;
         HookID := SetWindowsHookEx(WH_MOUSE, MouseProc, 0, GetCurrentThreadId());
    end;
    //------------------------------------------------------------------------------
    procedure TForm26.FormDestroy(Sender: TObject);
    begin
         if HookID <> 0 then UnHookWindowsHookEx(HookID);
    end;
    //------------------------------------------------------------------------------
    end.
    Et il me retourne l'erreur ci-dessous, mais je ne sais pas la corriger ni même trouver où est déclaré le "NativeInt"...

    [DCC Erreur] frmMiniBrowser.pas(65): E2010 Types incompatibles : 'NativeInt' et 'Integer'


    Je suis sous W7 et delphi XE2

    une idée ?
    Bye et bon code...

    Ce n'est pas tant l'aide de nos amis qui nous aide , mais notre confiance dans cette aide .

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par petitcoucou31 Voir le message
    ...il me retourne l'erreur ci-dessous, mais je ne sais pas la corriger ni même trouver où est déclaré le "NativeInt"...

    [DCC Erreur] frmMiniBrowser.pas(65): E2010 Types incompatibles : 'NativeInt' et 'Integer'
    Le typage ne correspondant pas à ce qui est attendu, il faut rechercher précisément où ça coince...
    Donc avec XE2, on regarde comment est proto-typée la fonction SetWindowsHookEx. On a dans l'unité Winapi.windows :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function SetWindowsHookEx(idHook: Integer; lpfn: TFNHookProc; hmod: HINST; dwThreadId: DWORD): HHOOK; stdcall;
    Le paramètre qui pose problème lors de la compilation est le 2° de type TFNHookProc. On va procéder de même et regarder comment il est défini. On a dans la même unité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TFNHookProc = function (code: Integer; wparam: WPARAM; lparam: LPARAM): LRESULT stdcall;
    Si je compare le résultat à la fonction que vous passez en paramètre, je constate trois différences de prototypage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function MouseProc(nCode: integer; wParam, lParam: longint): longint; stdcall;
    Il faut donc modifier la déclaration de la fonction pour qu'elle soit compatible avec le type attendu par SetWindowsHookEx.
    En écrivant function MouseProc(nCode: integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;, plus d'erreur...
    Philippe.

  3. #3
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    744
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 744
    Points : 500
    Points
    500
    Par défaut
    Merci à toi , je vais essayer cela !
    Bye et bon code...

    Ce n'est pas tant l'aide de nos amis qui nous aide , mais notre confiance dans cette aide .

  4. #4
    Membre éprouvé
    Avatar de Aooka
    Homme Profil pro
    Scripting Powershell & Wlangage
    Inscrit en
    Juillet 2015
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Scripting Powershell & Wlangage

    Informations forums :
    Inscription : Juillet 2015
    Messages : 227
    Points : 1 095
    Points
    1 095
    Par défaut
    Tu peux te créer une variable iTmp (par exemple) de type Integer dans ta fonction où tu va stocker ta variable de type NativeInt, et tu utilisera par la iTmp plutôt que ta variable NativeInt.

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/08/2004, 14h48

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