Comment Delphi environnement de variables comme $(BDS) a évalué?
Je suis en train de faire certains ranger les installateurs pour nos bibliothèques internes (au lieu de simplement l'ouverture de la DPK et en cliquant sur "installer" et arriver dans un désordre plus tard...) et cela m'a causé d'avoir de comprendre comment obtenir à divers Delphi variables telles que Les Packages Connus, le registre RootDir valeur etc.
Je vois que dans Delphi il y a un certain nombre de variables que vous pouvez utiliser (dans un chemin de recherche par exemple) tel que $(BDS) etc. Quand je regarde dans ma machine de variables d'environnement, je ne vois pas ces, que ce soit dans le système ou de l'utilisateur courant.
Mes questions sont:
- Est Delphi faire quelque chose d'interne, afin d'élargir $(BDS), etc? Ou puis-je les utiliser en externe, d'une certaine façon (par exemple regardé dans le registre).
- Pourquoi la notation $(xxxx) dans un chemin de recherche et pas %xxxx% avec un envirnment variable?
Grâce
OriginalL'auteur Brian Frost | 2011-07-29
Vous devez vous connecter pour publier un commentaire.
1) Ils sont tout simplement des variables d'environnement Delphi définit pour ses propres processus et vous pouvez les récupérer avec GetEnvironmentStrings à partir d'un paquet de conception installé dans l'IDE; voici un exemple.
Si votre programme d'installation est un exécutable séparé, vous pouvez toujours (plus ou moins fiable) devinez où obtenir certaines valeurs:
BDS
:RootDir
valeur dans le registre, par exempleHKEY_CURRENT_USER\SOFTWARE\Embarcadero\BDS\8.0\
BDSCOMMONDIR
: dans les anciennes versions (Delphi 2007, je suppose) c'est une variable d'environnement globale, définie par le Delphi programme d'installation. Dans les versions ultérieures, vous pouvez le trouver dansrsvars.bat
.Certains autres pourraient probablement être dérivée, par exemple:
BDSLIB
:$(BDS)\lib
BDSINCLUDE
:$(BDS)\include
Variables définies par l'utilisateur (défini dans les Options de l'Environnement de dialogue) sont stockées dans la
Environment Variables
sous-clé de registre.2) Le
$(...)
notation est à mon humble avis tout simplement mieux parce qu'il est distinct de l'ouverture et de la fermeture des délimiteurs, il est plus facile à utiliser pour rechercher/remplacer des opérations et également plus lisible.Pourquoi seraient-ils ailleurs? Ils sont probablement à l'origine par rapport à la course BDS.exe et pas de sens en dehors du processus, puisque vous pouvez avoir plusieurs BDS installe. Le meilleur persistante place, vous êtes susceptibles de trouver serait le désinstaller les inscriptions.
parce qu'ils sont utiles dans de nombreuses situations plus que juste l'IDE. Ce serait bien s'ils pouvaient être ré-utilisé dans un serveur de build. Maintenant, vous devez dupliquer ces types de paramètres.
rsvars.chauve-souris va installer tous les revendeurs dans votre shell.
OriginalL'auteur Ondrej Kelle
La notation $() pour les variables est une convention utilisée par les de FAIRE, de ce que Borland utilisé comme outil de construction avant de passer à MSBuild. (en D2007?)
make
. Petite correction: la syntaxe n'a pas été inventé par broland, mais a été répandu avant même broland.bien sûr, pmake et gmake l'utiliser aussi. IIRC quelques coquilles (tcsh?) trop.
pour le Broland faute de frappe 😉
OriginalL'auteur Marco van de Voort
Je suis en train de travailler sur un peu de ligne de commande de l'automatisation de la génération (parce que je veux m'éloigner de Finale Constructeur) donc j'ai eu à traiter avec ces variables. Pour invoquer le compilateur de ligne de commande que nous sommes censés soit invoquer l'invite de commande à l'aide de la "RAD Studio Invite de commandes" dans le menu Démarrer, ou à inclure le "rsvars.chauve-souris" script dans nos propres scripts.
Que rsvars.chauve-souris script ressemble à ceci:
Comme vous pouvez le constater, le très spécial BDS variable est définie dans il y, ainsi que quelques autres. Le BDS chemin correspond avec le BDS chemin d'installation dans le Registre, mais j'ai décidé de le lire à partir de la
rsvars.bat
script, en espérant qu'il sera plus à l'avenir. Je suis donc essentiellement la lecture de la.bat
fichier dans unTStringList
et je suis en appliquant une simple RegEx pour identifier les affectations.Ma routine qui s'étend ceux
$(Nam)
style expressions comprend un cas particulier pour laDELPHI
nom, pour gérer Delphi7: Si je vois que, je le remplacer par le chemin d'installation de l'IDE.J'ai essayé de construire mon petit générateur de trop en divers points. Je recommande juste de déménager à Delphi 2007 ou plus tard, et à l'aide de MSbuild. C'est assez décent.
Oui, j'ai trouvé "CodeGear.Delphes.Cibles" en trop dans le dossier bin lequel plusieurs utilisateurs ont modifié.
J'ai besoin de soutien Delphi 7, 2010 et XE, et je vise quelque chose de plus proche de Finale du Générateur de fonctions (c'est à dire: - tout de la réelle Delphi construire pour le téléchargement terminé l'installation du KIT de notre "beta" serveur de fichiers). J'ai été à l'aide de Final Builder pour un looong moment, mais je finis toujours écrit minuscule applications de console pour toutes sortes de spécial fonctionnalité et puis l'appel de ceux de la FB script. Cette fois, je suis destinée à automatiser mes scripts à l'aide de dwscript (Delphi Script Web), j'ai la réelle Delphi construit allez, en mettant le reste ensemble, c'est juste une question de temps.
OriginalL'auteur Cosmin Prund
David est juste que ces variables sont spécifiques à Delphes (et C++ Builder), et ils ne sont pas disponibles comme "normal" variables d'environnement.
Cependant, ils peuvent être consultés dans le registre. La clé est:
HKCU\Software\<Borcadero>\BDS\<version>\Environment Variables
.Personnalisé "environnement", les variables que vous ajoutez peut être trouvé ici. Par exemple, j'ai un $(MVC) de la variable pour pointer vers le dossier où tous mes composants (les " versions) peut être trouvé.
Au travail, nous utilisons le registre pour rechercher les valeurs dans un script/app combinaison de convertir dprojs de cfg fichiers de notre serveur de build qui utilise le compilateur en ligne de commande. (Nous n'utilisons pas de l'IDE sur la machine de compilation, nous avons ajouté nos personnalisée Delphi variables d'environnement pour le registre manuellement).
Mise à jour
En fait, les Variables d'Environnement clé est utilisée pour l'utilisateur défini des variables d'environnement et pour l'annulation de la "norme" BDS variables d'environnement. Les valeurs par défaut de $(BDS*) variable d'environnement est nulle part pour être trouvée dans la base de registre...
Donc, les connaissances actuelles dit, si vous voulez obtenir vos mains sur les valeurs de l' $(BDS*) vars, vous devez remplacer les valeurs par défaut et de lire celles que vous avez indiqué dans les Variables d'Environnement de la clé.
Environment Variables
sous-clé pour les variables définies par l'utilisateur. Pour Delphi XE, je ne vois pasBDSLIB
définie n'importe où dans le registre. Ni dansHKEY_CURRENT_USER
niHKEY_LOCAL_MACHINE
.vous avez raison, mais remplace les valeurs par défaut de $(BDS*)'s peut être trouvé là-bas, de sorte que vous devriez toujours regarder là-bas. La valeur de $(BDS) se trouve dans:
HKCU\Software\<Borcadero>\BDS\<version>\RootDir
. À la recherche pour les autres...Négatif. David n'est pas droit, et ceux qui sont simplement de l'environnement de variables, fixés par processus et (naturellement) héritée par les enfants.
oui, ils sont variables d'environnement définies par l'IDE et en tant que tel, uniquement accessible à l'IDE ou le processus a commencé par l'IDE. Ils ne sont pas "simplement les variables d'environnement" comme ils ne sont pas disponibles en dehors de l'IDE arborescence des processus. David est/était(?) parfaitement raison de dire qu'ils sont spécifiques à Delphes même si Delphi a choisi d'utiliser des variables d'environnement pour les mettre en œuvre.
Oh, pas de soucis, ce n'est pas dans ma nature. Le sens de "NO U!", ce n'est pas confirmé si... s'il vous Plaît prendre cette manière, il est prévu: la bonne humeur. Ce que vous avez confirmé pour moi c'est le besoin apparent pour tout le monde de montrer le même genre de précision vous démontrer. Il m'a rappelé de moi quelque 10 à 15 ans en arrière. Aujourd'hui, je suis un teensy peu plus clémente... 🙂
OriginalL'auteur Marjan Venema