Bonjour à toutes et à tous,
Je rencontre quelques problèmes pour la lecture des API Sesam-VITALE avec DELPHI.
En effet, je dois utiliser la fonction suivante dans la DLL sgdw32.dll
Pour cela, j’ai déclaré ma fonction comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Unsigned short SGD_LireChamp ( unsigned short NumeroSession, unsigned short IdGroupe, unsigned short OccurenceGroupe, unsigned short NumeroChamp, char* ValeurChamp, size_t* TailleMax );
Et je l’appelle dans mon programme de la façon suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 function SGD_LireChamp( NumSession : Word; IdGroupe:Word; OccGroupeCourant:Word; NumChamp : Word; Var ValeurChamp : PChar; var TailleMax:LongWord ): Word; stdcall;external 'sgdw32.dll' name 'SGD_LireChamp';
Les variables NSession, IdtGrp et OccGrp ayant été préalablement chargées.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ResFunc:=SGD_LireChamp(NSession,IdtGrp,OccGrp,1,ValChamp,Taille);
Après exécution de la fonction , ma variable ValChamp (qui est un PChar initialisé à ‘Nil’) doit normalement être chargée ce qui n’est pas le cas.
Au contraire, l’évaluateur d’expression ne me donne plus aucun renseignement (alors qu’il indiquait ‘Nil’ avant) et tout appel à cette variable me plante le programme.
nb : La variable Taille est bien chargée avec la valeur '4' qui est la bonne valeur
Pour information, voici le résultat du mode « trace » lors de l’appel de cette fonction
Par avance, merci de votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SGD_LireChamp : numeroSession = 1, idGroupe = 3600, occurrenceGroupe = 1, numeroChamp = 1 { Zone::rechercherChamp : identifiant = 3600, occurrenceGroupe = 1, numero = 1 { Zone::positionnerDebut } cr = 0x0000, donnees = 0x0036868C, longueur = 4 }
Partager