DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Fonctions standard / Fonctions de gestion de Windows / Fonctions diverses WINDEV
  • Désactivation de la technologie JITc
  • Optimisation des appels externes
  • Utilisation de la constante ForceDestructeurObjetNonDynamique pour forcer la destruction des objets non dynamiques
  • Gestion des erreurs
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Permet de :
  • connaître et/ou modifier le comportement de l'application / du site, lorsque certaines erreurs sont générées. Selon le mode d'exécution sélectionné, ces erreurs peuvent être ignorées, ou générer des messages d'erreur. Dans certains cas, la fonction ModeExécution permet de retrouver le comportement des versions précédentes.
  • optimiser l'appel aux fonctions déclarées en externe. Permet d'optimiser la vitesse d'exécution de l'application dans 2 cas :
    • Procédures déclarées en externes
    • Codes compilés dynamiquement, appel d'une procédure globale ou locale du projet.
  • savoir et/ou modifier le mode d'utilisation de la technologie JITc par l'application. La technologie JITc est utilisée par défaut par l'application. Il est uniquement possible de la désactiver.
  • connaître et/ou modifier le mode de gestion des références faibles pour tous les objets instanciés.
Exemple
// Mode test ?
SI EnModeTest() = Vrai ALORS
	ModeExécution(modeNormal)
SINON
	// On applique le mode de comportement de WINDEV 5.5 
	// pour éviter l'affichage de certaines erreurs
	ModeExécution(modePermissif)
FIN
Syntaxe

Récupérer le mode d'exécution en cours Masquer les détails

<Résultat> = ModeExécution()
<Résultat> : Combinaison de constantes de type Entier
Mode d'exécution actuel de l'application ou du site :
AppelsExternesOptimisésOptimise la gestion des appels externes de procédures. Ce paramètre est combiné avec une des deux constantes suivantes.
DésactiveConversionAnsiUnicodeOptimiséeA partir de la version 29 Update 3, une conversion Ansi/Unicode optimisée a été mise en place afin d'accélérer les opérations qui manipulent des chaînes Ansi et Unicode. Cette nouvelle conversion limite également les risques de perte de caractères en cas d'alphabets différents.
Cette constante permet de retrouver le fonctionnement précédent (notamment en cas d'erreur de type "Erreur interne lors d'une conversion Ansi/Unicode optimisée").
DésactiveExécutionOptimiséeLa technologie JITc (Just In Time compilation) est désactivée.
ForceDestructeurObjetNonDynamiqueForce la destruction des objets non dynamiques (même si une référence forte a été prise).
modeAncienFonctionnementDuréeLes propriétés du type Durée conservent le fonctionnement de la version 12.
modeNormalLes erreurs rencontrées génèrent des messages d'erreur.
modePermissifLes erreurs rencontrées sont ignorées (mode WINDEV 5.5 ou WEBDEV 1.5).

Modifier le mode d'exécution en cours Masquer les détails

<Résultat> = ModeExécution(<Nouveau mode d'exécution>)
<Résultat> : Constante de type Entier
Mode d'exécution de l'application ou du site après modification.
AppelsExternesOptimisésOptimise la gestion des appels externes de procédures. Ce paramètre est combiné avec une des deux constantes suivantes.
DésactiveConversionAnsiUnicodeOptimiséeA partir de la version 29 Update 3, une conversion Ansi/Unicode optimisée a été mise en place afin d'accélérer les opérations qui manipulent des chaînes Ansi et Unicode. Cette nouvelle conversion limite également les risques de perte de caractères en cas d'alphabets différents.
Cette constante permet de retrouver le fonctionnement précédent (notamment en cas d'erreur de type "Erreur interne lors d'une conversion Ansi/Unicode optimisée").
DésactiveExécutionOptimiséeLa technologie JITc (Just In Time compilation) est désactivée.
ForceDestructeurObjetNonDynamiqueForce la destruction des objets non dynamiques (même si une référence forte a été prise).
modeAncienFonctionnementDuréeLes propriétés du type Durée conservent le fonctionnement de la version 12.
modeNormalLes erreurs rencontrées génèrent des messages d'erreur.
modePermissifLes erreurs rencontrées sont ignorées (mode WINDEV 5.5 ou WEBDEV 1.5).
<Nouveau mode d'exécution> : Constante de type Entier
Nouveau mode d'exécution à appliquer.
AppelsExternesOptimisésOptimise la gestion des appels externes de procédures. Ce paramètre est combiné avec une des deux constantes suivantes.
DésactiveConversionAnsiUnicodeOptimiséeA partir de la version 29 Update 3, une conversion Ansi/Unicode optimisée a été mise en place afin d'accélérer les opérations qui manipulent des chaînes Ansi et Unicode. Cette nouvelle conversion limite également les risques de perte de caractères en cas d'alphabets différents.
Cette constante permet de retrouver le fonctionnement précédent (notamment en cas d'erreur de type "Erreur interne lors d'une conversion Ansi/Unicode optimisée").
DésactiveExécutionOptimiséeDésactive la technologie JITc (Just In Time compilation).
ForceDestructeurObjetNonDynamiqueForce la prise de référence faible pour tous les objets.
modeAncienFonctionnementDuréeLes propriétés du type Durée conservent le fonctionnement de la version 12.
modeNormalLes erreurs rencontrées génèrent des messages d'erreur.
modePermissifLes erreurs rencontrées sont ignorées (mode WINDEV 5.5 ou WEBDEV 1.5)
Remarques
WINDEVCode Utilisateur (MCU)

Désactivation de la technologie JITc

Pour désactiver la technologie JIT dans une application, il est conseillé d'utiliser la fonction ModeExécution avec la constante DésactiveExécutionOptimisée dans le code d'initialisation du projet. Dans ce cas, seuls les éléments chargés avant l'exécution du code d'initialisation du projet (composants, collections de procédures, classes) utiliseront la technologie JITc.
Pour désactiver la technologie JITc pour une application WINDEV (suspicion d'un problème lié à la technologie JITc par exemple), il est conseillé de modifier (ou de créer) le fichier <Nom de l'exécutable>.WX. Ce fichier doit être placé à côté de l'exécutable de l'application et doit contenir les informations suivantes :
[WD_EXECUTION]
OPTIM_EXECUTION=0

Optimisation des appels externes

Attention : Lorsqu'un projet est migré depuis la version 5.5, le mode permissif a été automatiquement ajouté lors de la migration dans le code d'initialisation du projet. Pour prendre en compte l'optimisation des appels externes, il est nécessaire d'indiquer la ligne de code suivante :
ModeExécution(modePermissif + AppelsExternesOptimisés)

Utilisation de la constante ForceDestructeurObjetNonDynamique pour forcer la destruction des objets non dynamiques

Attention : Lors de l'utilisation de la constanteForceDestructeurObjetNonDynamique pour forcer la destruction des objets non dynamiques, le réglage s'applique à tous les instances de classes de l'application.
Dans le cas d'un projet existant, les effets peuvent être nombreux et le changement de mode impose une validation complète de l'application.
Il est plutôt conseillé d'intervenir sur la gestion de la libération (prise de référence faible/forte) au niveau de chaque classe, plutôt que globalement pour le projet. Pour plus de détails, consultez Gestion avancée des instances de classes.

Gestion des erreurs

Le tableau ci-dessous présente le comportement de l'application en fonction des erreurs rencontrées :
Cas d'erreurModePermissifModeNormal
Lecture d'un indice hors borne d'un champ Table, Liste ou Combo.
Exemples :
s = ListeA[-1]
n = ListeB[56]..Couleur
Le programme retourne '0' ou une chaîne vide ("") selon la propriété utilisée.Une erreur d'exécution s'affiche.
Exemple :
"L'indice spécifié [-1] est invalide"
Écriture dans un indice négatif d'un champ Liste, Table ou Combo.
Exemple :
Liste[-1] = "Dupont"
La ligne de code est ignoréeUne erreur d'exécution s'affiche.
Exemple :
"L'indice spécifié [-1] est invalide"
Écriture dans un indice trop grand d'un champ Liste, Table ou Combo.
Exemple :
LISTE[54] = "Dupont"
Un élément vide est inséré à la fin du champ Liste et prend la valeur indiquée.Une erreur d'exécution s'affiche.
Exemple :
"L'indice spécifié [54] est invalide"
Utilisation des fonctions Ouvre, OuvreFenêtreMobile, OuvreFille, OuvreSoeur avec un nom de fenêtre possédant des espaces supplémentaires.
Exemple :
Ouvre("FEN1 ")
Les espaces supplémentaires sont supprimés.Une erreur d'exécution s'affiche.
Exemple :
"La fenêtre 'FEN1 ' est introuvable"
Utilisation des fonctions de gestion des menus contextuels et déroulants avec un numéro de menu inexistant.
Exemple :
MenuMarque(FEN1, 54645)
La fonction renvoie '0' et la fonction ErreurInfo est renseignée.Une erreur d'exécution s'affiche.
Exemple :
"L'option de menu spécifiée [54645] n'existe pas dans le menu"
Utilisation des fonctions Droite et Gauche avec un nombre de caractères à extraire négatif.
Exemple :
Gauche("abcdef", -1)
La fonction renvoie une chaîne vide ("").La fonction renvoie EOT et la fonction ErreurInfo est renseignée.
Utilisation de la fonction Milieu avec une position de départ négative et/ou un nombre de caractères à extraire négatif.
Exemple :
Milieu("abcdef", -2, -4)
La fonction :
  • commence l'extraction au début de la chaîne si la position de départ est négative.
  • renvoie la chaîne source complète.
La fonction renvoie EOT et la fonction ErreurInfo est renseignée.
Classification Métier / UI : Code neutre
Composante : wd300vm.dll
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 20/08/2024

Signaler une erreur ou faire une suggestion | Aide en ligne locale