La  2.70
Accueil Remonter De la 5.x a la 7.0 De la 7.0 a DBPlus De la 2.0 a 2.61.5 la 2.62 La  2.70 anciennes

 

Vue d'ensemble de la version dBASEPlus 2.70

 

dBASE Plus 2.7 (Build 2160)

Fonctionnalités et corrections

2 mars 2011

Généralités


dBASE Plus 2.70 est compatible avec Windows 7 et Vista et conserve la rétrocompatibilité avec  Windows XP.

dBASE Plus 2.70 respecte les règles du   Microsoft's User Account Control (UAC) ce qui permet à dBASE et ses applications de tirer profit des améliorations de sécurité apportées par ses règles.


Afin de bénéficier de la protection maximale prévue par l'UAC, dBASE Plus 2.70 s'exécute par défaut avec les droits utilisateur standard lorsqu'il est installé sur Windows 7 ou Vista.

dBASE Plus 2,70 contient un certain nombre de nouvelles fonctionnalités pour vous aider à travailler avec des droits d'utilisateur standard et simplifier la mise à niveau de vos applications pour qu'elles adhérent ainsi à l'UAC.


Quels sont exactement les règles UAC du point de vue des développeurs de logiciels ?

Les règles de l'UAC de Windows sont destinées à :

- Protéger les fichiers des programmes installés pour éviter qu'ils ne soient modifiés ou endommagés par les utilisateurs ou les programmes qui ne devraient pas y avoir accès.

- Conserver les fichiers de chaque utilisateur, les paramètres de configuration, etc... séparément des autres utilisateurs, sauf si des fichiers ou réglages partagés sont nécessaires.

- Restreindre, dans la plus grande mesure du possible, l'accès à n'importe quel paramètre général de la machine.

Par défaut, seuls les utilisateurs avec les privilèges d'administrateur ont accès aux  paramètres généraux de la machine.

Windows 7 et Windows Vista mettent en œuvre ces règles en limitant soigneusement les autorisations par défaut pour les dossiers de l'arborescence du dossier Program Files, l'arborescence des dossiers Program Data, l'arborescence des dossiers Windows, et l'arborescence des dossiers Users (utilisateurs). Les autorisations aux clés de registre sont également soigneusement limitées afin que les utilisateurs standards ne soient pas autorisés à modifier les paramètres qui peuvent affecter d'autres utilisateurs. 

Afin de respecter les règles de l'UAC, un programme doit:

- positionner le code exécutable dans l'arborescence du dossier Program Files et NE PAS tenter de modifier ou de créer de nouveaux fichiers dans cette arborescence de dossiers lors de l'exécution du programme. (Les utilisateurs standard ont généralement les droits pour lire et exécuter des fichiers dans cette arborescence. Toutefois, les programmes peuvent être configurés pour exiger des privilèges d'administrateur qui empêcherait les utilisateurs standard de les exécuter).

- installer les fichiers de données et configuration partagés dans l'arborescence des dossiers ProgramData - mais NE PAS tenter de modifier ou créer de nouveaux fichiers dans cette arborescence de dossiers lors de l'exécution du programme. (Par défaut, les utilisateurs standard ont un accès en lecture seule à cette arborescence de dossiers).

- installer les fichiers originaux requis par chaque utilisateur dans l'arborescence des dossiers ProgramData (à copier sur l'arborescence de dossier privée de chaque utilisateur).

- Mettre en place une arborescence de dossiers privés dans l'arborescence des dossiers utilisateurs pour chaque utilisateur lorsqu'un utilisateur exécute pour la première fois le programme, de sorte que chaque utilisateur puisse modifier ses fichiers privés comme il le souhaite sans interférer avec d'autres utilisateurs.

 



Comment dBASE Plus 2.70 applique-t-il les règles de l'UAC ?

Installation

Lors de l'installation sur Windows 7 ou Vista, dBASE installe des dossiers contenant un fichier de configuration par défaut (plus.ini), des exemples de code, les dossiers de fichiers d'application, et des outils de conversion dans le dossier C:\ProgramData\dBASE\Plus.

 (Notez que sous Windows XP, la valeur par défaut pour 2.70 sera de poursuivre l'installation de dBASE Plus comme dans les versions précédentes).

En outre, lors de l'installation du Borland Database Engine (BDE) il sera configuré de façon légèrement différente que dans le passé pour placer son fichier de configuration dans l'arborescence ProgramData et écrire les paramètres NET DIR du BDE afin qu'ils pointent sur ce même dossier de ProgramData. 

Démarrage de dBASE Plus

Lorsque dBASE Plus 2,70 est démarré, il veille à ce que l'utilisateur dispose bien d'un dossier dBASE personnel dans son arborescence d'utilisateur privé pour conserver ses données de configuration spécifique (en plus.ini), leurs copies privées des fichiers d'exemples et d'utilitaires de conversion et tous les fichiers temporaires créés lors de l'exécution dBASE.

 En outre, la première fois que dBASE est lancé par un utilisateur, il sera exécuté un utilitaire de configuration utilisateur qui installera les fichiers exemples et de conversion de l'utilisateur, et qui générera tous les Source Alias et User BDE Alias par défaut.

Aussi pendant le démarrage, dBase vérifie le fichier de configuration plus.ini de l'utilisateur pour rechercher tout les User (utilisateur) Alias BDE et s'il en trouve, il les charge dans la session BDE par défaut. Ils seront donc disponibles pour une utilisation immédiate.

 Les Alias User BDE sont une nouveauté dans dBASE Plus 2,70. Ils sont des alias BDE privé et sont stockées dans le fichier plus.ini de chaque utilisateur. De nouveaux User Alias BDE peuvent être créés via l'Assistant Database accessibles au sein de dQuery ou par code ou en modifiant manuellement le fichier plus.ini. (Notez que les Alias BDE peuvent encore être créés par le BDE Administrator pour une utilisation par tous les utilisateurs sur un même ordinateur, mais les droits d'administrateur sont nécessaires pour les créer ou de les supprimer). 

--- Fin de la traduction personnelle et reprise (avec légères corrections) ci-dessous du texte figurant dans la documentation PlusUsersGuide28_FR.pdf à partir de la page 49. ---

Runtime et Applications dBASE

Le runtime de dBASE Plus 2.70 effectuera la plupart des tâches de démarrage telles que décrites ci-dessus pour dBASE Plus IDE. Quand le runtime est lancé il s’assurera que l’utilisateur a un dossier spécifique à l’application dans l’arborescence privée des dossiers de l’utilisateur et s’assurera qu’elles ont leur propre fichier spécifique à l’application .ini (à moins que l’application soit installée pour fonctionner sans .ini). Si des Noms d’Alias de la BDE de l’Utilisateur sont trouvés dans le fichier .ini de l’utilisateur, ils seront chargés dans la session de la BDE par défaut pour les rendre disponibles par l’application.

En option, une application peut être réalisée pour effectuer des tâches supplémentaires pour installer un nouvel utilisateur. dBASE Plus 2.70 comporte un nouveau code exemple qui peut être modifié pour s’adapter à la configuration privée d’un utilisateur et aussi des dossiers ou une copie des dossiers depuis un sous-dossier de ProgramData pour ajouter les Noms d’Alias de cet utilisateur dans la BDE.

 

Nouvelles Propriétés et Méthodes

dBASE Plus 2.70 inclut un ensemble de nouvelles propriétés et de nouvelles méthodes pour faciliter et adapter une application afin d’observer les règles UAC comme suit :

_app.useUACPaths - Vrai si dBASE Plus ou l’application suit les règles d’UAC, autrement à Faux.

_app.iniFile - Contient le chemin entier de plus.ini ou du dossier .ini d’une application.

_app.currentUserPath - Chemin entier du dossier privé de dBASE ou de l’application de l’utilisateur.

_app.allUsersPath - Chemin entier du dossier partagé où des fichiers ou des dossiers partagés peuvent être localisés par dBASE ou par une application.

_app.roamingUsersPath - Chemin entier du chemin du dossier de l’actuel utilisateur itinérant où vous pouvez choisir de stocker des données pour une application qui sera itinérante d’un poste de travail à l’autre si le réseau accueillant cette application est configuré pour soutenir les utilisateurs itinérants.

méthode de session.addAlias () - pour ajouter des Noms D’Alias Utilisateur à la BDE dans la session en cours de la BDE

méthode de session.deleteAlias () - pour enlever un Nom D’Alias Utilisateur à la BDE de la session en cours de la BDE (autre que la session par défaut)

la commande BUILD inclut de nouvelles options pour spécifier le comportement par défaut des UAC et si besoin et où utiliser un fichier .ini

l’outil de conception dQuery installé avec dBASE Plus a été amélioré pour les Noms d’Alias de l’Utilisateur de la BDE et pour supporter et pour suivre les règles de l’UAC.

Dans le fichier qBDEMgr.cc, fourni avec le code des exemples installés avec dBASE Plus, il y a de nouvelles méthodes pour sauvegarder des Noms d’Alias de l’Utilisateur de la BDE dans _app.iniFile ou en les chargeant à partir de _app.iniFile.

 

NOUVELLES CARACTERISTIQUES

_app Object

QAID:6478 : Ajout pour la compatibilité UAC de la propriété useUACPaths à l’objet de _app. Ceci indique si dBASE ou une application dBASE doit suivre des règles de l’UAC.

Rappel

Vista et Windows 7 s’attendent à ce que les applications adhèrent à certaines conventions afin de faciliter que Windows empêche des fichiers programmes d’être modifiés ou corrompus - par l’erreur d’un utilisateur ou par des utilisateurs malveillants ou par des virus.

Les Programmes qui ne suivent pas ces conventions sont sujets à un examen plus minutieux par Windows avant que le programme soit lancé (par l’intermédiaire des mécanismes de Windows User Access Controls (UAC)) et que Windows puisse déclencher des avertissements supplémentaires ou que Windows empêche le programme de s’exécuter (selon les droits d’accès de l’utilisateur, les définitions actuelles de Windows et de la configuration desfichiers manifest pour l’application).

useUACPaths donne la capacité à dBASE Plus d’adhérer aux conventions de Vista et de Windows 7 en ce qui concerne l’emplacement où dBASE Plus crée et stocke son dossier .ini (contenant les définitions de l’utilisateur), où dBASE demande au BDE de créer ses fichiers temporaires et le chemin par défaut pour la session au démarrage de dBASE.

Pendant le démarrage, dBASE et les applications de dBASE détermineront es paramètres des useUACPaths (comme décrit ci-dessous) et puis vérifieront les useUACpaths pour déterminer l’emplacement de différents fichiers dont plus.ini ou le dossier.ini d’une application.

Quand l’indicateur est à Faux (False), dBASE et les applications dBASE définira les emplacements des fichiers .ini, des fichiers utilitaires de conversion, incluant des fichiers, divers fichiers exemple, et des fichiers temporaires dossiers dans des dossiers utilisés dans les versions antérieures de dBASE.

Quand l’indicateur est à vrai (True), dBASE définira les emplacements pour les fichiers .ini, des utilitaires de conversion, les fichiers Include, divers fichiers exemples, et les fichiers temporaires aux dossiers dans l’arborescence du dossier privé de l’utilisateur actuel selon les exigences de l’UAC de Windows. dBASE détermine le chemin de l’arborescence du dossier privé de l’utilisateur en recherchant le chemins spécial du dossier Windows suivant : CSIDL_LOCAL_APPDATA et CSIDL_ APPDATA.

Comment _app.useUACPaths est défini au démarrage de dBASE Plus (Plus.exe) ou d' une application .exe (Plusrun.exe) :

 

Pendant le démarrage de plus.exe :

- il vérifie si l’enregistrement HKEY_LOCAL_MACHINE\SOFTWARE\dBASE\PLUS\series1\useUACPaths existe et s’il est positionné à y ou à Y

Si oui,

    Défini _app.useUACPaths à True

Autrement,

   Défini _app.useUACPaths à False

- Ensuite, il vérifie si le commutateur -v, a été passé à plus.exe sur la ligne de commande, qui surchargerait le paramètre par défaut ci-dessus.

Si oui,

Si -v1 (ou - V1) a été trouvé sur la ligne de commande,

   Défini _app.useUACPaths à True

Si - v0 (ou -V0) a été trouvé sur la ligne de commande,

   Défini _app.useUACPaths à False

 

En résumé pour plus.exe :

Si une clé de registre useUACPaths existe pour dBASE Plus, elle définit le statut par défaut pour _app.useUACPaths. Si cette clé n’existe pas, _app.useUACPaths est défini à False.

Si le commutateur -v est passé sur la ligne de commande, il surchargera le paramétrage par défaut ci-dessus.

 

Pendant le démarrage de plusrun.exe

Il vérifie si la clé de regisre HKEY_LOCAL_MACHINE\SOFTWARE\dBASE\PLUS\series1\useUACPaths existe et si elle est positionnée sur y ou à Y.

Si oui,

   Défini _app.useUACPaths à True

Autrement,

   Défini _app.useUACPaths à False

- Ensuite, il vérifie si, sur la ligne de commande, le commutateur -v a été passé à plus.exe (ou une application .exe) qui surchargerait le paramètre par défaut ci-dessus.

Si oui,

Si - v1 (ou - V1) a été trouvé sur la ligne de commande,

   Défini _app.useUACPaths à True

Si - v0 (ou - V0) a été trouvé sur la ligne de commande,

   Défini _app.useUACPaths à False

- Si aucun commutateur -v n’a été passé par l’intermédiaire de la ligne de commande plusrun.exe examine dans le registre afin de s’assurer qu’aucune clé spécifique à l'application ne définisse useUACPaths : HKEY_LOCAL_MACHINE\SOFTWARE\dBASE\PLUS\RuntimeApps\<app file name>\useUACPaths

 

Si cette clé est trouvée, elle surcharge la définition par défaut effectuée par l’intermédiaire de la clé de registre dBASE\PLUS\series1

Si positionné à y ou à Y

   Défini _app.useUACPaths à True

Si positionné à n ou à N

   Défini _app.useUACPaths à False

- Si aucun commutateur -v n’a été passé par l’intermédiaire de la ligne de commande ET si aucune clé du registre de RuntimeApps n’a été trouvée pour l’application, alors l’application .exe est vérifiée pour voir si une définition est incluse pour positionner _app.useUACPaths à True.

    Si une instruction incorporée à l’UAC (embedded UAC flag) est trouvée

       Défini _app.useUACPaths à True

 

En résumé pour une application .exe :

Si une clé du registre useUACPaths existe pour dBASE Plus, elle est utilisée pour définir par défaut app.useUACPaths. Si cette clé n’existe pas, _app.useUACPaths est positionné à False.

Si une application .exe est construite avec une définition incluse pour l’UAC, la définition incluse surchargera la position globale pardéfaut réglée par dBASE Plus ci-dessus.

Si une clé spécifique du registre de l’application existe, sa définition surchargera la définition de la clé du registre de dBASE Plus et la définition incluse de l’UAC de l’application .exe (si une clé existe).

Si le commutateur -v est passé sur la ligne de commande, il surchargera toutes les définitions ci-dessus.

Items affectés par _app.useUACPaths
Pendant le démarrage, dBASE PLUS ou dBASE PLUS Runtime contrôle _app.useUACPaths pour les items suivants

Définition de l’emplacement par défaut de plus.ini ou d’un fichier .ini de l’application

Quand useUACPaths est à true, dBASE Plus plus.ini ou un fichier .ini de l’application chargera à partir de l’arborescence locale du dossier d’un utilisateur plutôt que du même dossier venant de plus.exe ou d’une application .exe qui a été déjà lancée.

Premièrement Plus.exe ou plusrun.exe s’assurera que les dossiers suivants existent et les créent s’ils n’existent pas encore :

Pour PLUS.EXE:

<CSIDL_LOCAL_APPDATA>\<dBASE Plus subpath>\Bin

<CSIDL_APPDATA>\<dBASE Plus subpath>\Bin

Pour une application .exe:

<CSIDL_LOCAL_APPDATA>\<application launch subpath>

<CSIDL_APPDATA>\<application launch subpath>

<.. subpath> Pour dBASE PLUS IDE et une Application dBASE Plus est évalué comme suit...

- Si le chemin de lancement contient soit "\Program Files" ou "\Program Files (x86)", le subpath de lancement est défini par la partie du chemin de lancement restant, une fois que la partie contenant "\Program Files" ou "\Program Files (x86)" est enlevée.

Par exemple :

   Si dBASE plus est installé dans le dossier :

         C:\Program Files\dBASE\Plus

   <dBASE Plus subpath> sera défini par :

         \dBASE\Plus

   Si une application .exe est installée dans le dossier :

        C:\Program Files\VotreSociété\VotreApp

   <application launch subpath> sera défini par :

         \VotreSociété\VotreApp

- Si le chemin de lancement NE contient pas "\Program Files" ou "\Program Files (x86)", alors le <.. subpath> est défini par le chemin restant après élimination de l’identificateur de lecteur et des deux points ou élimination du chemin UNC de niveau supérieur du chemin de lancement.

Par exemple :

   Si dBASE Plus est lancé depuis :

         C:\dBASE\PLUS

   <application launch subpath> sera défini par :

         \dBASE\PLUS

   Une application réalisée avec dBASE Plus est lancée de :

         \ \VotreCheminUNC\VotreSociété\VotreApp

   <application launch subpath> est défini par :

      \VotreSociété\VotreApp

Ensuite plus.exe ou plusrun.exe s’assurera qu’un fichier .ini est chargé comme suit :

l cherche le fichier ini dans le chemin passé par l’intermédiaire d’un commutateur –C

   S'il le trouve, il charge .ini à partir de ce chemin

   S'il ne l'a pas trouvé,

       Il cherche .ini dans <CSIDL_LOCAL_APPDATA>\<.... subpath>[\Bin]

  Si non trouvé,

     Il cherche.ini dans <CSIDL_COMMON_APPDATA>\<.... subpath>[\Bin]

        Si trouvé, il copie dans <CSIDL_LOCAL_APPDATA>\<.... subpath>[\Bin]

Si non trouvé,

Il cherche .ini dans le chemin de lancement de l’EXE

    Si trouvé, il copie dans <CSIDL_LOCAL_APPDATA>\<.... subpath>[\Bin]

Si non trouvé,

Il crée le nouveau dossier plus.ini dans :

<CSIDL_LOCAL_APPDATA>\<.... subpath>[\Bin]

Le fichier .ini ouvert est maintenant situé dans <CSIDL_LOCAL_APPDATA>\<.... subpath>[\Bin]

Détermine si oui ou non : :dBStartup:InitNewUser.pro est lancé la première fois par un utilisateur particulier qui lance dBASE Plus (ou une application de dBASE).

Dans dBASE Plus, InitNewUser.pro créera les copies privées des divers dossiers de convertisseurs et exemples comme suit :
Converters
dBLClasses
dQuerySamples
Include
Media
Samples
Web

 

Dans une application dBASE, un InitNewUser.pro personnalisé peut être utilisé pour effectuer des tâches personnalisées lors de l’installation d’un nouvel utilisateur.

Définition des chemins Source Alias pour faire correspondre les emplacements privés pour les Sources Alias suivantes :
DOS5Conv
Examples
FormControls
Forms
Images
Movies
Nonvisual
Output
ReportControls
Reports
Samples
Toolbars
Webwizards

Détermine les chemins par défaut des Alias du BDE pour les noms d’Alias suivants :
dBASESamples
dQuerySamples
dBASEContax
dBASESignup
dBASETemp
dQueryTemp

Utilisé par dQuery pour déterminer l’emplacement de :
dquery.ini
dquery temporary files
My DataModules folder

Emplacements par défaults à utilier par l’Explorateur de Projet pour déterminer l’emplacement de :
projexp.ini
Project Explorer temporary files
My Projects folder

Utilisé par l'Assistant Web pour déterminer l’emplacement pour ses fichiers temporaires.

 

Propriétés Supplémentaires de _app...
QAID 6601 Ajoutée la propriété iniFile à l’objet _app pour prendre en compte le chemin complet et le nom du fichier dans le dossier de l’application de dBASE ou .ini de dBASE. Ceci évitera la conjecture de chercher dans quel dossier est localisé le fichier .ini.

Ajoutée la propriété allUsersPath à l’objet _app qui est une référence au dossier Bin situé dans le répertoire Windows CSIDL_COMMON_APPDATA

Ajoutée la propriété currentUserPath à l’objet _app qui est une référence référence au dossier Bin situé dans le répertoire Windows CSIDL_LOCAL_APPDATA

Nouvelle COMMANDE RMDIR(RD)

QAID: 134 Ajout d'une nouvelle commande RMDIR (Remove Directory) à dBASE PLUS. Ajout également d'une commande synonyme RD qui fonctionne de la même façon.

RMDIR/RD
Supprime un répertoire (Removes a directory)

Syntaxe :

RMDIR <directory>
ou RD<directory>
<directory> - Répertoire que vous voulez supprimer. Ceci peut être un chemin entier du répertoire ou un simple chemin de répertoire.

Description
RMDIR essaye de supprimer le répertoire spécifique. Il peut supprimer un répertoire seulement si celui-ci est vide et n’est pas en cours d’utilisation par un autre programme.
RD fonctionne exactement la même façon que RMDIR.


Exemple :
RMDIR Mydir
   Essayera de supprimer le dossier mydir
RMDIR C:\somefolder\otherfolder
   Essayera de supprimer le dossier otherfolder
RD Mydir
   Essayera de supprimer le dossier mydir
RD C:\somefolder\otherfolder
   Essayera de supprimer le dossier otherfolder

 

Classe Session

QAID:6478 Ajout de tempPath à la classe Session.

tempPath contient le chemin pour les fichiers temporaires de la session et peut être changé pour utiliser un autre répertoire (tant qu’aucune requête ou procédure stockée n’est en activité). (Ceci met en application les dossiers privés selon QAID :223)

Ajoutée une méthode addAlias() - ajoute des Noms d’Alias Utilisateur au BDE dans l’objet session lié à la session BDE :

Syntaxe

<oRef>.addAlias(<cAlias>,<cDriver>,[<cOptions>])

<oRef> - est un objet session

<cAlias> - Nom d’Alias Utilisateur de la BDE (jusqu’à 31 caractères)

<cDriver> - Nom du driver du BDE pour les alias spécifiés. Ceux-ci correspondent aux noms de drivers listés chez l’Administrateur de la BDE :
     DBASE
     PARADOX
     ASCII
     SQL Link Driver Names

<cOptions> - paramètres dépendants des options du driver. Pour un alias DBASE le chemin (Path) : l’option est exigée comme suit :

PATH:<Chemin complet vers le dossier>

Si plus d’une option est nécessaire, séparer les options distinctes par un point-virgule.

Ajoutée une méthode deleteAlias() - supprime Alias Utilisateur du BDE de la session à la BDE liée à un objet session (ne fonctionne pas pour l’objet de session par défaut dans _app.session)
Syntaxe : <oRef>.deleteAlias (<cAlias>])
<oRef> - un objet de session
<cAlias> - Nom de l’Alias Utilisateur du BDE (jusqu’à 31 caractères)

 

Plus IDE

QAID 6609 Ajoute la capacité que dBASE Plus exécute un programme dBL la première fois qu’un nouvel utilisateur lance plus.exe.

Ce programme dBL peut être utilisé pour exécuter n’importe quel code spécifique d’installation d’utilisateur comme :

- création des copies spécifiques d’utilisateur du dossier de démo de code et de données

- ouverture d’une fenêtre avec l’information pour un nouvel utilisateur ou un utilisateur nouvellement promu

Pour dBASE Plus 2.70, le dossier et les fichiers suivants seront installés :

Nouveau Dossier :

C:\Program Files\dBASE\Plus\Bin\dBLCore\Startup

Nouveau Fichier

C:\Program Files\dBASE\Plus\Bin\dBLCore\Startup\InitNewUser.pro

Pendant le Démarrage pour un nouvel utilisateur, dBASE Plus 2.70 lancera la commande :

DO :DBSTARTUP:INITNEWUSER.PRO

Également pendant le démarrage, une nouvelle Source Alias, DBSTARTUP sera définie pour indiquer le nouveau dossier :

C:\PROGRAM FILES\dBASE\PLUS\Bin\dBLCore\Startup

(ou C:\Program Files (x86)\dBASE\PLUS\Bin\dBLCore\Startup.)

Commande BUILD

QAID 3680 Syntaxe modifiée pour que la commande BUILD ajoute la clause INI comme suit :

BUILD <filename>[, <filename> ...] /FROM <resp-filename>
            [ICON <filename>] [SPLASH <filename>] [TO <exe-filename>]
            [WEB] [INI [ON | OFF | ROAM]]

Là où :

INI OFF - indique que l’application NE créera PAS ou n’utilisera pas de fichier ini.
INI ROAM - indique que l’application créera et utilisera un fichier ini dans le dossier utilisateur CSIDL_APPDATA
INI ou INI ON - indique que l’application .exe créera et utilisera un fichier ini dans n’importe quel dossier d’autres de définition UseUACPaths spécifié. Ceci est identique à NE PAS spécifier une clause INI du tout.

Syntaxe Révisée pour que la commande de BUILD pour ajouter les clauses UAC comme suit :

Syntaxe Révisée:

BUILD <filename>[, <filename> ...] /FROM <resp-filename>
           [ICON <filename>] [SPLASH <filename>] [TO <exe-filename>]
           [WEB] [INI [ON | OFF | ROAM]]
           [UAC]

Quand UAC est spécifié l’.exe résultant est construit avec par défaut en incluant la définition _app.UseUACPaths à VRAI quand l’.exe est lancé.
Cette définition inclus dans l’UAC surcharge l'option par défaut du runtime par l’intermédiaire de la clé du registre : HKLM\SOFTWARE\dBASE\PLUS\Series1\UseUACPaths

Cependant, la définition incluse peut être surchargée en plaçant une définition spécifique dans le registre de RuntimeApp dans la clé de registre :
HKLM\SOFTWARE\dBASE\PLUS\RuntimeApps\<app file name>\UseUACPaths

Ou en utilisant le commutateur -v de la ligne de commande :
-v1 positionne UseUACPaths à true
-v0 positionne UseUACPaths à false


Fonction FILE( )
QAID 1542 Ajoutée la capacité permettant d’utiliserdes chemins de source alias avec la fonction File().


Fonctions GETFILE( ) and PUTFILE()

QAID 6621 Ajoutée la possibilité à GetFile() et à PutFile() de passer un nom de File Type Group dans les paramètres de la File Type List comme suit :

f = getfile("","Title",true,"Web Images (*.jpg,*.png,*.gif,*.bmp)")

Ici "Web Images" est un nom de groupe personnalisé qui inclut les types les fichiers spécifiques définis dans la parenthèse.

Ajout de la possibilité d’utiliser un nom de Groupe prédéfini de Type de Fichier comme : "Form()".

dBASE détectera la parenthèse gauche et droite et recherchera un nom de groupe prédéfini assorti. Si trouvé, la liste des types des fichiers liés au groupe prédéfini sera ajoutée à l’énumération qui est ajoutée aux Types de Fichier de combobox dans la boite de dialogue de GetFile() ou de PutFile().

Les Types de Fichier entre parenthèses doivent être séparés par une virgule ou un point-virgule et peuvent être spécifiés dans l’un ou l’autre des formats :

<ext> ou .<ext> ou *.<ext>

où <ext> signifie l’extension du fichier telle que jpg ou txt.

Si on spécifie une énumération de Liste de Type de Fichier qui contient des parenthèses non équilibrées ou une parenthèse droite avant une parenthèse gauche, une nouvelle erreur sera déclenchée avec le message :

"Unbalanced parenthesis in file type list"

AMELIORATION DU CODE

QAID 1321 Ajoutée la capacité de spécifier une source alias dans une directive #include.

Par exemple :

#include :MyCode:MyHeader.h

Modifiée la routine de recherche de fichier pour que la directive #include recherche dans les emplacements suivants si aucun chemin (ou source alias) n’est donné pour le fichier :

<CSIDL_LOCAL_APPDATA>\dBASE\PLUS\include

<CSIDL_COMMON_APPDATA>\dBASE\PLUS\include

Ces emplacements supplémentaires seront recherchés si _app.useUACPaths est vrai et que le fichier n’est pas trouvé plus tôt dans la séquence de recherche.

La séquence de recherche est révisée comme suit:

Vérifie si la source alias est spécifiée.

     Si oui, substitue le chemin par le d’Alias et vérifie si le dossier existe

     Si trouvé, retour

Si aucune source alias, ou fichier n’est trouvé,

     Recherche le dossier comme exactement spécifié dans la déclaration #include

     Si le chemin est inclus, le chemin sera recherché.

     Si aucun chemin n’est inclus, la recherche sera effectuée dans le répertoire en cours.

Si non trouvé, vérifie si l’extension du fichier est spécifiée.

     Si non, ajoute « .h » au nom du fichier et recherche encore le fichier soit dans le dossier en cours ou le chemin spécifié.

Si non trouvé,

     Si aucun chemin nest spécifié,

     Si _app.useUACPaths est à vrai,

        Recherche le fichier dans :

         <CSIDL_LOCAL_APPDATA>\dBASE\PLUS\include

      Si non trouvé,

          Recherche le fichier dans :
          <CSIDL_COMMON_APPDATA>\dBASE\PLUS\include

Si non trouvé (ou _app.useUACPaths est à faux),

      Recherche le fichier dans :

     _dbwinhome + "\include"

Si non trouvé,

Recherche le fichier dans le chemin spécifié par l’intermédiaire de la variable d’environnement INCLUDE.

Notez que INCLUDE doit contenir seulement un chemin avec une barre oblique inverse afin que la recherche soit réussie.

 

CORRECTIONS

Formulaires et Contrôles Formulaire

QAID 6590 Corrigé MAV qui pouvait se produire si le popup menu du formulaire est libéré avant que le destructeur du formulaire ne s’exécute (comme dans la manipulation de onClose du formulaire).

QAID 6580 Corrigé la peinture du bord des contrôles de Editor et des contrôles de TextLabel quand le formulaire est d’abord ouvert. Ces bords n’étaient pas peints dans dBASE Plus 2.62, ceci était dû à une régression dans le build 2102 pour QAID : 6547

Source Editor

QAID 3168 Corrigé le bogue dans lequel Editor réalisait un GPF s’il y avait 2 instances de n’importe quel concepteur qui modifiaient le même fichier.

Par exemple, si on permettait à 2 instances de dQuery d’être ouvertes et que le même .dmd était ouvert dans chacun des deux.

QAID 6302 Corrigé le GPF qui se produisait en ouvrant le Source Editor en lançant dBASE Plus dans une version 64 bits de Windows.

QAID 3170 Corrigé le bogue qui causait la corruption des données et/ou un GPF dans Editor quand un grand nombre de lignes étaient mises en surbrillance (1000-2000), et que l’option de menu "Comment Lines" était appelée.

La source de problème était que dBASE saturait la mémoire, en raison d’un stockage inefficace de la façon de stocker l’information Undo (dans ce cas elle était répétée 1000-2000 fois).

Ajouté du code pour récupérer la mémoire gaspillée à chaque 100 itérations

Container

QAID 6623 Corrigée la fonction OnPaint() du Container pour repeindre les composants visibles du Container permettant aux objets text de repeindre correctement la couleur de fond quand ils sont transparents et que la propriété colorNormal du Container est changée.

Objet Text

QAID 6624 Corrigée l’objet Text afin qu’il soit redessiné quand il lui est notifié qu’une de ses propriétés de police a été changée.

Précédemment, quelques changements de propriété de police ne déclenchaient pasune mise à jour du dessin intégral, comme un changement du à text.fontsize, et la mise à jour de la position horizontale des textes n’était pas réalisée quand son alignement était défini pour centrer le texte.

ErrorLevel

QAID 134 Mise à jour du tableau (Array) des erreurs internes errorLevel[] afin d’inclure les nouvelles erreurs supplémentaires suivantes :
405 Path Too Long
406 Directory is not empty
407 Directory is in use
408 Cannot remove directory
409 Directory not found
410 Cannot change with active Query or StoredProc objects

Find Dialog

QAID 534 Corrigé le paramètre par défaut de Up et Down des boutons radios pour s’assurer que seulement l’un d’entre eux est positionné à la fois.