PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

  • Présentation
  • Fonction non disponible
  • Une fonction n'est pas disponible sous Linux : comment adapter mon code existant ?
  • Champ non disponible
  • Utilisation de champs disponibles
  • Je dois modifier l’IHM d’une fenêtre. Comment être sûr d’utiliser des champs disponibles pour toutes mes configurations ?
  • Chemins de fichiers
  • Arborescence
  • Casse et accents
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
Application Linux : Conseils et astuces
HFSQLDisponible uniquement avec ce type de connexion
Présentation
Dans des applications multi-configurations Windows/Linux, diverses limitations peuvent apparaître : champ non géré, fonctions non disponibles, ...
Vous trouverez dans cette page d'aide la ou les solution(s) à apporter.
Fonction non disponible

Une fonction n'est pas disponible sous Linux : comment adapter mon code existant ?

Certaines fonctions ou propriétés peuvent ne pas être disponibles en configuration Linux :
  • soit parce qu'elles n'ont pas de raison d'être (les fonctions RegistreXXX par exemple).
  • soit parce que les champs associés ne sont pas disponibles (fonctions Arbrexxx).
  • soit parce qu'elles ne sont pas encore disponibles dans cette version.
Le code-cible conditionnel permet de définir, pour un traitement donné (code de clic d'un bouton par exemple), le code qui sera exécuté selon la plateforme en cours.
Pour créer une zone de code-cible conditionnel :
  1. Dans l’éditeur de code, sélectionnez l’option "Code .. Code-Cible Conditionnel .. Nouvelle zone".Dans l’éditeur de code, sous le volet "Code", dans le groupe "Code Cible", déroulez "Code cible" et sélectionnez "Nouvelle zone".
  2. Dans la fenêtre qui s'affiche, cliquez sur le bouton "Avancé".
  3. Définissez les différentes zones et les plateformes de chaque zone. Dans notre cas, si les fonctions non disponibles peuvent être remplacées par un autre traitement, deux zones sont à créer :
    • une zone "Windows" qui contient les plateformes "Applications Windows 32 bits" et "Applications Windows 64 bits".
    • une zone "Linux" qui contient les plateformes "Code Linux 32 bits" et "Code Linux 64 bits".
      Conseil : Si le code initial ne peut pas être remplacé et doit être exécuté uniquement pour une plateforme donnée, utilisez du code-cible conditionnel en définissant uniquement les plateformes disponibles. Il est bien sûr possible d’utiliser un bloc de type "SI EnModeLinux() = Faux ALORS", qui aura le même comportement en exécution ; mais dans ce cas, une erreur sera toujours affichée dans l’éditeur.
  4. Lorsque la zone de code-cible est créée, l’éditeur de code est coupé en deux (ou plus). Il suffit alors de saisir le code de chaque zone, normalement.
Bien évidemment, les zones de code-cible conditionnel peuvent être encadrées de zones de code "communes" et réciproquement.
Pour plus de détails, consultez Code-Cible Conditionnel.
Champ non disponible
Certains champs ne sont pas encore disponibles dans le framework Linux : c’est le cas des champs arbre, table hiérarchique, code-barres ou forme par exemple.
En exécution Linux, si un seul champ n’est pas supporté dans la fenêtre, aucun champ ne sera affiché et une erreur WLangage sera affichée.
Dans ce cas, il existe différentes possibilités.
Le champ peut être supprimé
Il s’agit d’un champ "mineur" (le champ forme par exemple, utile pour délimiter des zones dans l’IHM). Vous pouvez au choix et selon le cas :
  • le supprimer,
  • le remplacer par une image ou par un libellé "vide" avec un cadre.
Le champ peut être déplacé
Il s’agit d’un champ important qui ne peut pas être supprimé mais qui peut être déplacé dans une autre fenêtre facilement (un champ code-barres par exemple). Dans ce cas, il suffit de :
  • créer une nouvelle fenêtre dédiée à l’af­fichage du champ.
  • déplacer le champ dans cette nouvelle fenêtre.
  • ajouter dans la fenêtre d’origine un bouton pour ouvrir la nouvelle fenêtre créée. Bien sûr, ce bouton ne devra pas être accessible en Linux.
Le champ ne peut être ni sup­primé, ni déplacé
Il s'agit d’un champ important qui ne peut être ni supprimé, ni déplacé (un champ Arbre ou table hiérarchique par exemple). Dans ce cas, la seule solution consiste à dupliquer la fenêtre pour que chaque configuration dispose de SA fenêtre.
Pour dupliquer une fenêtre :
  1. Sélectionnez l'option "Fichier .. Enregistrer sous" de l’éditeur de fenêtres. Sous l'éditeur de fenêtres, sous le volet "Accueil", dans le groupe "Général", déroulez "Enregistrer" et sélectionnez "Enregistrer sous".
  2. Donnez un nouveau nom à la fenêtre. Vous pouvez par exemple suffixer le nom selon la plateforme (par exemple “FEN_ FicheClient_Linux”).
  3. Utilisez un code-cible conditionnel pour appeler la fenêtre adaptée à la plateforme d’exécution.
Attention : Cette solution est à utiliser avec précaution et pour des fenêtres légères en code et IHM. En effet, une fois la fenêtre doublée, toutes les modifications, corrections, ... doivent être réalisées en double, avec le risque non négligeable d’oublis.
Utilisation de champs disponibles

Je dois modifier l’IHM d’une fenêtre. Comment être sûr d’utiliser des champs disponibles pour toutes mes configurations ?

WINDEV, WEBDEV et WINDEV Mobile indiquent clairement les champs et paramètres de champs qui ne sont pas disponibles dans une ou plusieurs configurations du projet.
  • Les différents types de champs disponibles
    Les options et boutons de la barre d’outils qui permettent de créer des champs sont simplement grisés si la configuration courante ne gère pas ce type de champ.
    Si vous utilisez un champ qui n’est pas disponible dans une autre des configurations du projet, une erreur apparaît dans le volet des erreurs.
  • Les options des champs
    Certains paramètres de champs peuvent ne pas être disponibles selon la plateforme d’exécution.
    Ces paramètres peuvent toujours être modifiés dans la fenêtre de description du champ, mais ils sont signalés :
    • en gris si le paramètre n’est disponible pour aucune des configurations du projet.
    • en violet si le paramètre est disponible pour certaines configurations et indisponible pour d’autres.
Chemins de fichiers
Il existe des différences dans la gestion de fichiers entre Windows et Linux :
  • au niveau de l'arborescence des fichiers.
  • au niveau de la casse et des accents.

Arborescence

Le séparateur utilisé dans l’arborescence des chemins diffère selon la plateforme :
  • "\" en Windows,
  • "/" en Linux.
Le WLangage dis­pose de deux fonctions pour gérer ce problème :
  • La fonction fSep renvoie le séparateur correspondant à la plateforme en cours d’exécution. Cette fonction permet de construire un chemin quelle que soit la plateforme en cours.
    // Construit le chemin du fichier de configuration
    sFichierConfig = fRepExe() + fSep() + "config.ini"
    Remarque : la fonction ComplèteRep permet d’ajouter le bon séparateur à une arborescence. Mais le code devient moins lisible au-delà de 2 inclusions.
  • La fonction fSéparateur permet de récupérer un chemin avec des séparateurs normalisés. Cette fonction est particulièrement utile si l’application utilise des chemins mémorisés / construits sur une plateforme différente.
    sFichierConfig = ".\Temp\MonFichier.txt"
    // Normalise le chemin
    sFichierConfig = fSéparateur(sFichierConfig)
    // Sous Windows : ".\Temp\MonFichier.txt"
    // Sous Linux  : "./Temp/MonFichier.txt"

Casse et accents

Linux, au contraire de Windows, est sensible à la casse des fichiers.
Par exemple, la ligne de commande suivante :
// Ouvre le fichier "MonFichier.Txt"
fOuvre("MonFichier.txt")
n'ouvrira pas le fichier "monfichier.txt" sous Linux alors qu'il sera correctement ouvert sous Windows.
Il est donc nécessaire de vérifier la casse des fichiers sur le disque et celle utilisée dans le code WLangage.
Version minimum requise
  • Version 16
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire