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
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
);
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
 
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';
Et je l’appelle dans mon programme de la façon suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
ResFunc:=SGD_LireChamp(NSession,IdtGrp,OccGrp,1,ValChamp,Taille);
Les variables NSession, IdtGrp et OccGrp ayant été préalablement chargées.

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
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
}
Par avance, merci de votre aide