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

Windev Mobile Discussion :

Appel de la fonction 'appelProcedureWL' dans une procédure globale Java


Sujet :

Windev Mobile

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Septembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Appel de la fonction 'appelProcedureWL' dans une procédure globale Java
    Bonsoir,

    J'ai un projet Android en windev mobile 17 dans lequel je fait appel à une procédure globale en Java car le WL ne me permet pas de faire ce que j'ai besoin.
    Ma procédure Java me permet de récupérer un tableau de String dans lequel je liste des noms de fichiers. J'ai besoin de retourner en WL afin de traiter convenablement ma liste de fichiers. Petit hic : ma procédure Java ne peux pas retourner mon tableau de String car seul les types primitifs sont autorisés par windev.
    Du coup je me suis dit que ce n'était pas grave et qu'il suffisait que ma procédure en Java fasse appel à une procédure en WL via la fonction 'appelProcedureWL'. Et la c'est le drame ! J'ai une erreur au niveau de la génération du .apk :

    Erreur retournée :
    src\com\sousou\monProjet\wdgen\GWDCPProceduresGlobales.java:47: error: cannot find symbol
    appelProcedureWL("GetListe",retourtab);


    Une idée ? Pourquoi la fonction 'appelProcedureWL' n'est pas reconnu ? Il y a quelque chose à déclarer afin de l'utiliser ?

    Cordialement

  2. #2
    Membre éprouvé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Février 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2010
    Messages : 553
    Points : 1 075
    Points
    1 075
    Par défaut
    J'utilise beaucoup des appels à du code natif, car malheureusement WM est un peu en retard par rapport au SDK.

    Concernant la fonction "appelProcedureWL", elle fonctionne très bien.

    Deux précautions toutefois :
    - on ne peut y passer que des types simples : dans ton cas, c'est sans doute pour cela que cela plante ... tu passes un tableau .... Solution : sérialiser les données dans un String (ce que je fais), et on désérialise dans la fonction WM
    - ATTENTION : si ta fonction WM fait appel à l'IHM de ton applications tu risques plantage si ta procédure Java est un dans un listener !!!!! (elle est dans un autre thread que le thread principal et n'ap pas le droit de toucher à l'interface utilisateur ... il faut le savoir)... dans ce cas utiliser "ExécuteThreadPrincipal" dans ta procédure WM appelée pour appeler la fonction d'affichage. Ta procédure WM sert de "proxy".

    PS : un petit plus sur le pouce si ma réponse te convient.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Septembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Merci pour ta réponse si rapide et toutes ces infos. Ca va me servir.
    J'ai par contre vraiment un problème avec "appelProcedureWL" car j'ai le même plantage lorsque je passe en paramètre un simple String (idem si je passe aucun paramètre).
    Je ne comprend vraiment pas. Après plusieurs heures de recherche sur le net je n'ai pas trouvé une seule personne ayant rencontré ce problème.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Février 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2010
    Messages : 553
    Points : 1 075
    Points
    1 075
    Par défaut
    Montre nous le code java et windev.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Septembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Mes sources
    Ma procédure Java (InfosFilm):

    Code java : 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
    import jcifs.smb.*;
    import java.io.*;
    import java.util.*;
    import java.net.*;
     
    public static String InfosFilm(String path,String pType)
    {		
    	String renvoit = "GOOD";	
    	String[] retourtab;	
     
    	NtlmPasswordAuthentication auth = NtlmPasswordAuthentication.ANONYMOUS;
     
    	try{
    		SmbFile in = new SmbFile(path,auth);	
     
    		try {				
    			retourtab = in.list();			
    			appelProcedureWL("GetListeFilms");
    			return renvoit;
     
    		}catch(SmbException ex2){
    			renvoit = "Erreur (2) :  " + ex2.getMessage();
    			return renvoit;		
    		}
     
    	}catch(MalformedURLException ex1){	
    		renvoit = "Erreur (1) :  " + ex1.getMessage()	;
    		return renvoit;
    	}	
    }

    Ma procédure Windev (GetListeFilms):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    PROCEDURE GetListeFilms()
     
    Info("test")
    Et enfin l'erreur :

    Echec de la création de l'application Android <C:\Mes Projets Mobile\VideoSoft\Exe\VideoSoft.apk>.


    Ligne de commande : "C:\Program Files\Java\jdk1.7.0_51\bin\javac.exe" -encoding UnicodeLittle -nowarn -source 1.5 -target 1.5 -d bin\classes -bootclasspath "C:\Android\android-sdk-windows\platforms\android-16\android.jar" gen\com\sousou\videosoft\*.java src\com\sousou\videosoft\wdgen\*.java -classpath "libs;libs\jcifs-1.3.16.jar"


    Erreur retournée :
    src\com\sousou\videosoft\wdgen\GWDCPProceduresGlobales.java:93: error: cannot find symbol
    appelProcedureWL("GetListeFilms");
    ^
    symbol: method appelProcedureWL(String)
    location: class GWDCPProceduresGlobales
    1 error
    Si vous avez une explication, je suis preneur.

    PS : Ce sont toutes les deux des procédures globale

  6. #6
    Membre éprouvé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Février 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2010
    Messages : 553
    Points : 1 075
    Points
    1 075
    Par défaut
    Au fait : quelle version de windev mobile ?

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Septembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    C'est dans le titre
    Windev Mobile 17

  8. #8
    Membre éprouvé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Février 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2010
    Messages : 553
    Points : 1 075
    Points
    1 075
    Par défaut
    Cela vient sans doute de cela .... je crois me souvenir que la fonction "appelProcedureWL" a été introduite dans la version 18 !

    En v17, il y avait une astuce, mais je ne m'en souviens plus (je crois qu'il fallait formater le nom de la fonction appelée en y ajoutant des caractères spécifiques).

    En ce qui me concerne comme j'utilise toujours les versions les plus récentes (v19), je n'ai donc pas constaté de problèmes.

    Solution efficace (mais chère) : acheter la dernière version.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Septembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    D'après l'aide en ligne la fonction est disponible pour les versions 17 et supérieures.
    http://doc.pcsoft.fr/fr-FR/?9000011&...isir_code_java

Discussions similaires

  1. [AC-2010] Appel de la fonction "Médiane" dans une requête
    Par StagiaireDK dans le forum Requêtes et SQL.
    Réponses: 26
    Dernier message: 13/11/2013, 09h51
  2. Réponses: 24
    Dernier message: 21/05/2010, 09h05
  3. Appeler une fonction scalaire dans une procédure stockée
    Par Chacha35 dans le forum Développement
    Réponses: 0
    Dernier message: 10/11/2009, 11h18
  4. Réponses: 11
    Dernier message: 04/02/2008, 10h32
  5. Appel d'un script SQL dans une procdure stockée
    Par doudou10000 dans le forum Oracle
    Réponses: 10
    Dernier message: 01/12/2004, 10h01

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