J'ai un souci de portage d'application en C++ vers Windev.
Le problème se situe au passage d'une structure sur un appel à une
fonction.
Voici un extrait du code en C++ et la fonction NET_DVR_Login qui me
pose le problème:
NET_DVR_DEVICEINFO est une structure
sfSSerialNumber est une chaîne fixe sur 48
nByAlarmInPortNum est un entier sur 1
nByAlarmOutPortNum est un entier sur 1
nByDiskNum est un entier sur 1
nByDVRType est un entier sur 1
nByChanNum est un entier sur 1
nByStartChan est un entier sur 1
FIN
gstDeviceInfo est une NET_DVR_DEVICEINFO
gnUserId=AppelDLL32(gsNomDLL,
"NET_DVR_Login",gsAdrsIp,gnPort,gsUser,gsPassword,&gstDeviceInfo)
SI gnUserId<1 ALORS
Erreur("Erreur NET_DVR_Login"+gnUserId)
Ferme
FIN
Merci d'avance pour vos lumières.
Eric
--
Eric Laurent
nospam.laurent.systel@wanadoo.fr
(enlever nospam.)
Essaye en utilisant une chaine ASCIIZ sur 48 à la place de la chaine fixe ?
Merci, mais ce n'est pas mieux.
Un tableau fixe de 48 entiers sans signe sur un octet ?
A+
-- Romain PETIT http://cerbermail.com/?O16kfXOFcq (cliquez sur le lien ci-dessus pour me contacter en privé)
Eric Laurent
Romain PETIT a formulé la demande :
Un tableau fixe de 48 entiers sans signe sur un octet ?
Non plus. Le problème vient peut être de *LPNET_DVR_DEVICEINFO après la déclaration de structure ? Je ne connais pas cette déclaration, apparemment LP signifierait "Long Pointer"
J'en appelle aux spécialistes.
Merci,
Eric
-- Eric Laurent
(enlever nospam.)
Romain PETIT a formulé la demande :
Un tableau fixe de 48 entiers sans signe sur un octet ?
Non plus.
Le problème vient peut être de *LPNET_DVR_DEVICEINFO après la
déclaration de structure ?
Je ne connais pas cette déclaration, apparemment LP signifierait "Long
Pointer"
J'en appelle aux spécialistes.
Merci,
Eric
--
Eric Laurent
nospam.laurent.systel@wanadoo.fr
(enlever nospam.)
Un tableau fixe de 48 entiers sans signe sur un octet ?
Non plus. Le problème vient peut être de *LPNET_DVR_DEVICEINFO après la déclaration de structure ? Je ne connais pas cette déclaration, apparemment LP signifierait "Long Pointer"
J'en appelle aux spécialistes.
Merci,
Eric
-- Eric Laurent
(enlever nospam.)
patrice
dans l'ideal BYTE = entier sans signe sur 1 et BYTE [] = tableau de .. entier sans signe sur 1 attention aussi qu'il faut savoir si les structures sont packées sur 4 octets ou 1 octets parce que si 4 octets, chaque champ doit commencé à une adresse d'entier sur 4
ce qui donnerait tableau de 48 entier sans signe sur 1 entier sur 4 entier sur 4 ...
"Eric Laurent" a écrit dans le message de news:
Bonjour,
J'ai un souci de portage d'application en C++ vers Windev. Le problème se situe au passage d'une structure sur un appel à une fonction. Voici un extrait du code en C++ et la fonction NET_DVR_Login qui me pose le problème:
NET_DVR_DEVICEINFO est une structure sfSSerialNumber est une chaîne fixe sur 48 nByAlarmInPortNum est un entier sur 1 nByAlarmOutPortNum est un entier sur 1 nByDiskNum est un entier sur 1 nByDVRType est un entier sur 1 nByChanNum est un entier sur 1 nByStartChan est un entier sur 1 FIN
gstDeviceInfo est une NET_DVR_DEVICEINFO
gnUserId=AppelDLL32(gsNomDLL, "NET_DVR_Login",gsAdrsIp,gnPort,gsUser,gsPassword,&gstDeviceInfo) SI gnUserId<1 ALORS Erreur("Erreur NET_DVR_Login"+gnUserId) Ferme FIN
Merci d'avance pour vos lumières.
Eric
-- Eric Laurent
(enlever nospam.)
dans l'ideal BYTE = entier sans signe sur 1
et BYTE [] = tableau de .. entier sans signe sur 1
attention aussi qu'il faut savoir si les structures sont packées sur 4
octets ou 1 octets
parce que si 4 octets, chaque champ doit commencé à une adresse d'entier sur
4
ce qui donnerait
tableau de 48 entier sans signe sur 1
entier sur 4
entier sur 4
...
"Eric Laurent" <nospam.laurent.systel@wanadoo.fr> a écrit dans le message de
news:mn.2a797d892e519a5b.17482@wanadoo.fr...
Bonjour,
J'ai un souci de portage d'application en C++ vers Windev.
Le problème se situe au passage d'une structure sur un appel à une
fonction.
Voici un extrait du code en C++ et la fonction NET_DVR_Login qui me
pose le problème:
NET_DVR_DEVICEINFO est une structure
sfSSerialNumber est une chaîne fixe sur 48
nByAlarmInPortNum est un entier sur 1
nByAlarmOutPortNum est un entier sur 1
nByDiskNum est un entier sur 1
nByDVRType est un entier sur 1
nByChanNum est un entier sur 1
nByStartChan est un entier sur 1
FIN
gstDeviceInfo est une NET_DVR_DEVICEINFO
gnUserId=AppelDLL32(gsNomDLL,
"NET_DVR_Login",gsAdrsIp,gnPort,gsUser,gsPassword,&gstDeviceInfo)
SI gnUserId<1 ALORS
Erreur("Erreur NET_DVR_Login"+gnUserId)
Ferme
FIN
Merci d'avance pour vos lumières.
Eric
--
Eric Laurent
nospam.laurent.systel@wanadoo.fr
(enlever nospam.)
dans l'ideal BYTE = entier sans signe sur 1 et BYTE [] = tableau de .. entier sans signe sur 1 attention aussi qu'il faut savoir si les structures sont packées sur 4 octets ou 1 octets parce que si 4 octets, chaque champ doit commencé à une adresse d'entier sur 4
ce qui donnerait tableau de 48 entier sans signe sur 1 entier sur 4 entier sur 4 ...
"Eric Laurent" a écrit dans le message de news:
Bonjour,
J'ai un souci de portage d'application en C++ vers Windev. Le problème se situe au passage d'une structure sur un appel à une fonction. Voici un extrait du code en C++ et la fonction NET_DVR_Login qui me pose le problème:
NET_DVR_DEVICEINFO est une structure sfSSerialNumber est une chaîne fixe sur 48 nByAlarmInPortNum est un entier sur 1 nByAlarmOutPortNum est un entier sur 1 nByDiskNum est un entier sur 1 nByDVRType est un entier sur 1 nByChanNum est un entier sur 1 nByStartChan est un entier sur 1 FIN
gstDeviceInfo est une NET_DVR_DEVICEINFO
gnUserId=AppelDLL32(gsNomDLL, "NET_DVR_Login",gsAdrsIp,gnPort,gsUser,gsPassword,&gstDeviceInfo) SI gnUserId<1 ALORS Erreur("Erreur NET_DVR_Login"+gnUserId) Ferme FIN
Merci d'avance pour vos lumières.
Eric
-- Eric Laurent
(enlever nospam.)
Romain PETIT
Eric Laurent a exprimé avec précision :
Romain PETIT a formulé la demande :
Un tableau fixe de 48 entiers sans signe sur un octet ?
Non plus. Le problème vient peut être de *LPNET_DVR_DEVICEINFO après la déclaration de structure ? Je ne connais pas cette déclaration, apparemment LP signifierait "Long Pointer"
Oui, mais c'est Ok puisque tu passes par adresse (&). Tu es certain que c'est la structure qui pose problème ? Quelle est l'erreur générée ?
Quel sont les types des autres arguments, gnPort notamment ?
A+
-- Romain PETIT http://cerbermail.com/?O16kfXOFcq (cliquez sur le lien ci-dessus pour me contacter en privé)
Eric Laurent a exprimé avec précision :
Romain PETIT a formulé la demande :
Un tableau fixe de 48 entiers sans signe sur un octet ?
Non plus.
Le problème vient peut être de *LPNET_DVR_DEVICEINFO après la déclaration de
structure ?
Je ne connais pas cette déclaration, apparemment LP signifierait "Long
Pointer"
Oui, mais c'est Ok puisque tu passes par adresse (&).
Tu es certain que c'est la structure qui pose problème ?
Quelle est l'erreur générée ?
Quel sont les types des autres arguments, gnPort notamment ?
A+
--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Un tableau fixe de 48 entiers sans signe sur un octet ?
Non plus. Le problème vient peut être de *LPNET_DVR_DEVICEINFO après la déclaration de structure ? Je ne connais pas cette déclaration, apparemment LP signifierait "Long Pointer"
Oui, mais c'est Ok puisque tu passes par adresse (&). Tu es certain que c'est la structure qui pose problème ? Quelle est l'erreur générée ?
Quel sont les types des autres arguments, gnPort notamment ?
A+
-- Romain PETIT http://cerbermail.com/?O16kfXOFcq (cliquez sur le lien ci-dessus pour me contacter en privé)
Eric Laurent
Le 05/09/2008, Romain PETIT a supposé :
Oui, mais c'est Ok puisque tu passes par adresse (&). Tu es certain que c'est la structure qui pose problème ? Quelle est l'erreur générée ?
Quel sont les types des autres arguments, gnPort notamment ?
A+
En fait, le résultat de la DLL retourné est 0 alors qu'il devrait être supérieur à 0. Les autres arguments sonts OK car si je les modifie, je récupère un évènement d'erreur sur une autre fonction Callback que je n'ai pas décrite ici. C'est donc pourquoi je pense que le problème vient de la structure ou de son appel.
Eric.
-- Eric Laurent
(enlever nospam.)
Le 05/09/2008, Romain PETIT a supposé :
Oui, mais c'est Ok puisque tu passes par adresse (&).
Tu es certain que c'est la structure qui pose problème ?
Quelle est l'erreur générée ?
Quel sont les types des autres arguments, gnPort notamment ?
A+
En fait, le résultat de la DLL retourné est 0 alors qu'il devrait être
supérieur à 0.
Les autres arguments sonts OK car si je les modifie, je récupère un
évènement d'erreur sur une autre fonction Callback que je n'ai pas
décrite ici.
C'est donc pourquoi je pense que le problème vient de la structure ou
de son appel.
Eric.
--
Eric Laurent
nospam.laurent.systel@wanadoo.fr
(enlever nospam.)
Oui, mais c'est Ok puisque tu passes par adresse (&). Tu es certain que c'est la structure qui pose problème ? Quelle est l'erreur générée ?
Quel sont les types des autres arguments, gnPort notamment ?
A+
En fait, le résultat de la DLL retourné est 0 alors qu'il devrait être supérieur à 0. Les autres arguments sonts OK car si je les modifie, je récupère un évènement d'erreur sur une autre fonction Callback que je n'ai pas décrite ici. C'est donc pourquoi je pense que le problème vient de la structure ou de son appel.
Eric.
-- Eric Laurent
(enlever nospam.)
Eric Laurent
patrice a utilisé son clavier pour écrire :
dans l'ideal BYTE = entier sans signe sur 1 et BYTE [] = tableau de .. entier sans signe sur 1 attention aussi qu'il faut savoir si les structures sont packées sur 4 octets ou 1 octets
Comment sait-on si les structures sont packées sur 4 octets ?
Eric.
-- Eric Laurent
(enlever nospam.)
patrice a utilisé son clavier pour écrire :
dans l'ideal BYTE = entier sans signe sur 1
et BYTE [] = tableau de .. entier sans signe sur 1
attention aussi qu'il faut savoir si les structures sont packées sur 4
octets ou 1 octets
Comment sait-on si les structures sont packées sur 4 octets ?
Eric.
--
Eric Laurent
nospam.laurent.systel@wanadoo.fr
(enlever nospam.)
dans l'ideal BYTE = entier sans signe sur 1 et BYTE [] = tableau de .. entier sans signe sur 1 attention aussi qu'il faut savoir si les structures sont packées sur 4 octets ou 1 octets
Comment sait-on si les structures sont packées sur 4 octets ?
Eric.
-- Eric Laurent
(enlever nospam.)
Romain PETIT
Eric Laurent a exposé le 05/09/2008 :
En fait, le résultat de la DLL retourné est 0 alors qu'il devrait être supérieur à 0.
Oui, mais s'il n'y a pas de plantage, ta sutructure est à priori OK (sinon il y a de fortes chances d'avoir des violations de mémoire)
Les autres arguments sonts OK car si je les modifie, je récupère un évènement d'erreur sur une autre fonction Callback que je n'ai pas décrite ici. C'est donc pourquoi je pense que le problème vient de la structure ou de son appel.
gnPort est bien sur 2 octets ? (WORD = Entier sur 2 octets)
A+
-- Romain PETIT http://cerbermail.com/?O16kfXOFcq (cliquez sur le lien ci-dessus pour me contacter en privé)
Eric Laurent a exposé le 05/09/2008 :
En fait, le résultat de la DLL retourné est 0 alors qu'il devrait être
supérieur à 0.
Oui, mais s'il n'y a pas de plantage, ta sutructure est à priori OK
(sinon il y a de fortes chances d'avoir des violations de mémoire)
Les autres arguments sonts OK car si je les modifie, je récupère un évènement
d'erreur sur une autre fonction Callback que je n'ai pas décrite ici.
C'est donc pourquoi je pense que le problème vient de la structure ou de son
appel.
gnPort est bien sur 2 octets ?
(WORD = Entier sur 2 octets)
A+
--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
En fait, le résultat de la DLL retourné est 0 alors qu'il devrait être supérieur à 0.
Oui, mais s'il n'y a pas de plantage, ta sutructure est à priori OK (sinon il y a de fortes chances d'avoir des violations de mémoire)
Les autres arguments sonts OK car si je les modifie, je récupère un évènement d'erreur sur une autre fonction Callback que je n'ai pas décrite ici. C'est donc pourquoi je pense que le problème vient de la structure ou de son appel.
gnPort est bien sur 2 octets ? (WORD = Entier sur 2 octets)
A+
-- Romain PETIT http://cerbermail.com/?O16kfXOFcq (cliquez sur le lien ci-dessus pour me contacter en privé)
Eric Laurent
Merci à tous piur votre aide, le problème est résolu comme ceci.
NET_DVR_DEVICEINFO est une structure szSSerialNumber est une chaîne fixe sur 48 nByAlarmInPortNum est un entier sans signe sur 1 nByAlarmOutPortNum est un entier sans signe sur 1 nByDiskNum est un entier sans signe sur 1 nByDVRType est un entier sans signe sur 1 nByChanNum est un entier sans signe sur 1 nByStartChan est un entier sans signe sur 1 FIN
Merci à tous piur votre aide, le problème est résolu comme ceci.
NET_DVR_DEVICEINFO est une structure
szSSerialNumber est une chaîne fixe sur 48
nByAlarmInPortNum est un entier sans signe sur 1
nByAlarmOutPortNum est un entier sans signe sur 1
nByDiskNum est un entier sans signe sur 1
nByDVRType est un entier sans signe sur 1
nByChanNum est un entier sans signe sur 1
nByStartChan est un entier sans signe sur 1
FIN
Merci à tous piur votre aide, le problème est résolu comme ceci.
NET_DVR_DEVICEINFO est une structure szSSerialNumber est une chaîne fixe sur 48 nByAlarmInPortNum est un entier sans signe sur 1 nByAlarmOutPortNum est un entier sans signe sur 1 nByDiskNum est un entier sans signe sur 1 nByDVRType est un entier sans signe sur 1 nByChanNum est un entier sans signe sur 1 nByStartChan est un entier sans signe sur 1 FIN