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

API, COM et SDKs Delphi Discussion :

API SESAM VITALE


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 72
    Points : 52
    Points
    52
    Par défaut API SESAM VITALE
    Bonjour,

    J'ai potassé pas mal de sujet sur le forum en lien avec l'API Sesam mais je désespère d'arriver à quelque chose, je me prends continuellement une erreur 54 quoique je fasse (ça veut au moisn dire que je contacte bien la dll mais pourquoi cette fichue erreur de paramètre ?) !

    Y'en a t'il parmis vous qui connaisse cette API (oui je l'ai obtenu du GIE) et qui ont un exemple qui fonctionne ?

    Mon code (tout simple 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
    unit Unit1;
     
    interface
     
    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
     
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Edit1: TEdit;
        procedure Button1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
     
    implementation
     
    {$R *.dfm}
     
    function Hn_Init(
      psChemin : PChar;
      pusMode:Word;
      pusCoderreur:Word
    ): Word; stdcall;external 'api_lec.dll' name 'Hn_Init';
     
    function Hn_Finir(
      pusCoderreur:Word
    ): Word; stdcall;external 'api_lec.dll' name 'Hn_Finir';
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
    test1: integer;
    begin
    //test1:=Hn_Init('C:\soft\data\',1,0);
    test1:=Hn_Finir(1);
    edit1.Text:=inttostr(test1);
    end;
     
    end.

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 92
    Points : 159
    Points
    159
    Par défaut
    je ne connais pas cette DLL, mais en cherchant sur google je vois souvent la fonction Hn_Init sans le paramètre psChemin.

    que dit ta doc sur cette fonction ?

    sinon j'aurais écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test1:=Hn_Init(pChar('C:\soft\data\'),1,0);

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 72
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par jeromelef2 Voir le message
    je ne connais pas cette DLL, mais en cherchant sur google je vois souvent la fonction Hn_Init sans le paramètre psChemin.

    que dit ta doc sur cette fonction ?
    C'est le chemin vers les fichiers de configuration lié au lecteur VITALE, de toutes façons j'ai le même échec vers la seconde fonction qui ne contient qu'un paramètre ;-)

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 92
    Points : 159
    Points
    159
    Par défaut
    en cherchant un peu, j'ai trouvé ça

    c++

    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //VARIABLES SUPLEMENTAIRES
    	unsigned short	Err;
    	unsigned short	Err_complement;
    	unsigned short	Mode = CPS_EN_LIGNE;
     
    	Err = Hn_Init( NULL, &Mode, &Err_complement);
    	if(Err==0)
    	{	returnValue = "OK" ;}
    	else
    	{

    source : http://guillaume.morello.free.fr/PLU...04D/4DPlugin.c

    et pour la variable CPS_EN_LIGNE j'ai trouvé la valeur 2

    source : cache google http://webcache.googleusercontent.co...&ct=clnk&gl=fr

    n'ayant rien pour tester, je ne peux t'aider plus

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 72
    Points : 52
    Points
    52
    Par défaut
    Je n'utilise pas le mode "CPS_EN_LIGNE", mon code 1 est lié à un autre mode.
    Et ma configuration actuel m'oblige à renseigner le chemin

    J'arrive pas à voir où est mon erreur dans toute ce truc mais je te remercie pour ton aide !

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 92
    Points : 159
    Points
    159
    Par défaut
    encore en c++ en mode CPS_EN_LIGNE ( qui n'est pas ton mode de fonctionnement)

    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    unsigned short err = 0;
    unsigned char pcChemin = NULL;
    unsigned short pusMode = CPS_EN_LIGNE;
    unsigned short pusCodeErreur = 32780;
     
    err = Hn_Init( &pcChemin , &pusMode, &pusCodeErreur);

    tu remarqueras cette fois ci que le dernier paramètre est initialisé
    source : https://code.google.com/p/gteserv/so...cture.h?r=3364

    tu n'as pas de doc avec tes fonctions et les paramètres ?

  7. #7
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 844
    Points : 11 274
    Points
    11 274
    Billets dans le blog
    6
    Par défaut
    On remarque surtout qu'ils sont passés par adresse, alors que dans le code de popeyes ils sont passés par valeur...

    Essaye avec les déclarations suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function Hn_Init(Chemin: PChar; var pusMode: Word; var pusCoderreur: Word): Word; stdcall; external 'api_lec.dll';
     
    function Hn_Finir(var pusCoderreur: Word): Word; stdcall; external 'api_lec.dll' name 'Hn_Finir'; // ici, le var est incertain : pas d'exemple C++
    Delphi 5 Pro - Delphi 10.4 Rio Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 72
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par jeromelef2 Voir le message
    tu n'as pas de doc avec tes fonctions et les paramètres ?
    Si mais j'y comprends pas grand chose malgré toute ma bonne volonté ;-) Et vu les 12 000 pages sur la confidentialité qui sont signés avant d'y avoir accès, je crains de ne pouvoir vous en faire profiter c'est pour cela que je voulais savoir si certains avaient déjà travailler sur cette bibliothèque !

    Citation Envoyé par tourlourou Voir le message
    On remarque surtout qu'ils sont passés par adresse, alors que dans le code de popeyes ils sont passés par valeur...

    Essaye avec les déclarations suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function Hn_Init(Chemin: PChar; var pusMode: Word; var pusCoderreur: Word): Word; stdcall; external 'api_lec.dll';
     
    function Hn_Finir(var pusCoderreur: Word): Word; stdcall; external 'api_lec.dll' name 'Hn_Finir'; // ici, le var est incertain : pas d'exemple C++
    Dés que j'utilise le mot clé "var", je suis bloqué sur l'utilisation de ma fonction
    [dcc32 Erreur] Unit1.pas(48): E2033 Les types des paramètres VAR originaux et formels doivent être identiques
    Quoique je change, si j'ai pas de plantage de l'application, je reçois le code d'erreur 52 qui correspond à
    Un paramètre est renseigné à tort
    par la valeur NULL

  9. #9
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 92
    Points : 159
    Points
    159
    Par défaut
    Le fait de mettre var tu es obligé de mettre tes valeurs 0 et 1 dans des variables. D'où l'erreur du type

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 72
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par jeromelef2 Voir le message
    Le fait de mettre var tu es obligé de mettre tes valeurs 0 et 1 dans des variables. D'où l'erreur du type
    En effet, ça change tout !

    Bon, ça se déroule beaucoup mieux, j'ai encore un défaut mais probablement lié à autre chose, je vais essayer de me débrouiller avec ça !

    Merci à tous les 2 en tout cas

  11. #11
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 92
    Points : 159
    Points
    159
    Par défaut
    J'ai par habitude lorsque je travaille avec des dll de mettre tout les paramètres des fonctions dans des variables ou des constantes. Comme ça, sans aller dans la déclaration de la fonction, je sais de suite à quoi servent les paramètres.
    Pour les constantes, elles commencent toustes par le même préfixe de groupe: exemple ERR_XXXX, MODE_XXXX, comme ça sans la doc, j'ai les valeurs possibles

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

Discussions similaires

  1. API Sesam Vitale pour une application web
    Par cedricgirard dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 10/03/2018, 17h58
  2. [Généralités] SESAM-VITALE - Télétransmission
    Par Bapt's dans le forum WinDev
    Réponses: 2
    Dernier message: 11/02/2014, 20h12
  3. [WD17] W18 Carte Sesam Vitale
    Par thierrybatlle dans le forum WinDev
    Réponses: 3
    Dernier message: 18/03/2013, 18h46
  4. api sesam vitale
    Par max_31 dans le forum Débuter
    Réponses: 5
    Dernier message: 29/05/2012, 11h10
  5. API Sesam VITALE
    Par ipholed dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 24/01/2011, 14h32

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