|
FOROS PROFESIONALES WINDEV, WEBDEV y WINDEV Mobile |
| | | | | |
Adroid : Problème entre membre et propriété. |
Iniciado por Valentin, 21,jul. 2020 12:32 - 7 respuestas |
| |
| | | |
|
| |
Publicado el 21,julio 2020 - 12:32 |
Bonjour,
Je bute sur un problème très étrange en windev mobile. J'utilise des classes liées par mapping au fichier de l'analyse (21 classes en tout), tout fonctionne correctement sauf pour une.
Ma classe en question :
MFRAISSALARIE est une Classe <MAPPING=FRAISSALARIE> PRIVÉE <MAPPING> m_nIDFRAISSALARIE est un entier sur 8 octets <MAPPING=IDFRAISSALARIE> m_sFRSSANUM est une chaîne ANSI <MAPPING=FRSSANUM> m_dFRSDATE est une Date <MAPPING=FRSDATE> m_sFRSTYPE est une chaîne ANSI <MAPPING=FRSTYPE> m_moFRSMONTANT est un monétaire <MAPPING=FRSMONTANT> m_sFRSCOMMENTAITRE est une chaîne <MAPPING=FRSCOMMENTAITRE> m_sFRSTYPEPAIEMENT est une chaîne ANSI <MAPPING=FRSTYPEPAIEMENT> m_moFRSQUANTITE est un monétaire <MAPPING=FRSQUANTITE> m_dhFRSCREATION est une DateHeure <MAPPING=FRSCREATION> m_dhFRSMODIFICATION est une DateHeure <MAPPING=FRSMODIFICATION> m_sFRSETAT est une chaîne ANSI <MAPPING=FRSETAT> m_nIDFRAISSALARIE_LOCAL est un entier sur 8 octets <MAPPING=IDFRAISSALARIE_LOCAL, clé unique> <FIN> m_tabDocScan est un tableau de MDOCSCAN dynamique FIN
La méthode d'enregistrement :
Procedure PUBLIQUE GLOBALE Save(pclFraisSalarie est un MFRAISSALARIE dynamique, bFlag est un booléen = Vrai): (booléen,chaîne)
bModeAjout est un booléen = (pclFraisSalarie.p_nIDFRAISSALARIE_LOCAL <= 0) bRéussi est un booléen = bModeAjout ? HRAZ(FRAISSALARIE) SINON HLitRecherchePremier(FRAISSALARIE,IDFRAISSALARIE_LOCAL,pclFraisSalarie.p_nIDFRAISSALARIE_LOCAL) sMessage est une chaîne = "" SI bRéussi ALORS MémoireVersFichier(pclFraisSalarie,FRAISSALARIE) SI pclFraisSalarie.p_nIDFRAISSALARIE_LOCAL <= 0 _ET_ pclFraisSalarie.m_nIDFRAISSALARIE <= 0 ALORS pclFraisSalarie.p_dhFRSCREATION = DateHeureSys() SINON pclFraisSalarie.p_dhFRSMODIFICATION = DateHeureSys() FIN bRéussi = bModeAjout ? HAjoute(FRAISSALARIE) SINON HModifie(FRAISSALARIE) SI bRéussi ALORS Trace("FRAISSALARIE Save ID local : " + FRAISSALARIE.IDFRAISSALARIE_LOCAL) FichierVersMémoire(pclFraisSalarie,FRAISSALARIE) Trace("FRAISSALARIE Save objet ID local : "+ pclFraisSalarie.m_nIDFRAISSALARIE_LOCAL) Trace("FRAISSALARIE Save objet ID Propriété local : "+ pclFraisSalarie.p_nIDFRAISSALARIE_LOCAL) SI bFlag ALORS bRetourSave est un booléen sMessageSave est une chaîne eMode est un MFLAG.EFLAGAction eMode = bModeAjout ? MFLAG.EFLAGAction._Ajouter SINON MFLAG.EFLAGAction._Modifier (bRetourSave,sMessageSave) = MFLAG.Envoi_FraisSalarie(pclFraisSalarie,eMode) FIN SINON sMessage += [RC] + HErreurInfo(hErrComplet) FIN FIN
RENVOYER (bRéussi,sMessage)
J'ai un résultat différent entre mon membre et ma propriété : (Voir les traces dans ma méthode d'enregistrement) :
Procedure PUBLIQUE p_nIDFRAISSALARIE_LOCAL() : entier sur 8 octets
RENVOYER m_nIDFRAISSALARIE_LOCAL
Procedure PUBLIQUE p_nIDFRAISSALARIE_LOCAL( LOCAL nValeur est un entier sur 8 octets)
m_nIDFRAISSALARIE_LOCAL=nValeur
07-20 17:49:18.558: I/GO Salarie_PDA(1618): FRAISSALARIE Save ID local : 1 07-20 17:49:18.561: I/GO Salarie_PDA(1618): FRAISSALARIE Save objet ID local : 1 07-20 17:49:18.561: I/GO Salarie_PDA(1618): FRAISSALARIE Save objet ID Propriété local : 0 07-20 17:49:18.567: I/GO Salarie_PDA(1618): Envoi_FraisSalarie / FLAG ID LOCAL : 0 Frais ID LOCAL : 0
J'ai déjà refais entièrement ma classe (Suppression complète) retourné mon code dans tout les sens mais je ne vois pas comment je peux avoir ce problème ...
Avez vous une idée ?
Merci d'avance pour vos réponses. Valentin |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 3.345 mensajes Popularité : +93 (137 votes) |
|
Publicado el 21,julio 2020 - 20:21 |
| |
| |
| | | |
|
| | |
| |
Publicado el 22,julio 2020 - 13:41 |
Bonjour Popoy,
J'ai remplacé tous mes entiers sur 8 octets par des entiers et j'ai toujours le même problème. (Comme précisé dans ton lien)
Ma propriété à une valeur différente de mon membre (Uniquement sur android, le simulateur fonctionne parfaitement) ce qui est impossible normalement. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 3.345 mensajes Popularité : +93 (137 votes) |
|
Publicado el 22,julio 2020 - 17:03 |
tu as aussi essayé de rajouter local comme indiqué dans mon lien? |
| |
| |
| | | |
|
| | |
| |
Publicado el 22,julio 2020 - 17:26 |
Oui toutes mes propriétés l'ont aussi ! (Voir dans le 1er message, le LOCAL est déjà présent) |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 3.345 mensajes Popularité : +93 (137 votes) |
|
Publicado el 22,julio 2020 - 20:54 |
dans ce cas, je ne sais pas car j'utilise que très rarement les classes car je trouve que sous mobile c'est trop complexe à gérer |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 24 mensajes Popularité : +1 (1 vote) |
|
Publicado el 23,julio 2020 - 08:30 |
Une question : comment se fait-il que tu puisses accéder à l'attribut pclFraisSalarie.m_nIDFRAISSALARIE de ton objet, alors qu'il est privé ? Tu devrais avoir une erreur de compilation.
-- Nicolas |
| |
| |
| | | |
|
| | |
| |
Publicado el 23,julio 2020 - 09:32 |
Oui normalement je ne devrais pas avoir accès aux attributs privé mais on peux dans les méthodes de classe. (Dans ce cas c'est juste pour le trace)
Si je crée moi-même les accesseurs (une méthode Get et une Set) sans passer par les propriétés cela fonctionne.
Je ne vois pas comment corriger ce problème moi-même. Je vais tenter de faire un projet de test pour le support technique.
Pour info, j'utilise bien la dernière version de Windev Mobile 25 (89f) |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|