FAQ DelphiConsultez toutes les FAQ
Nombre d'auteurs : 124, nombre de questions : 934, dernière mise à jour : 23 octobre 2024 Ajouter une question
Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums Delphi et Delphi et bases de données de www.developpez.com et de l'expérience personnelle des auteurs.
Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose soient correctes. Les auteurs font le maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous souhaitez y apporter des corrections ou la compléter, contactez un responsable (lien au bas de cette page).
Nous espérons que cette FAQ saura répondre à vos attentes. Nous vous en souhaitons une bonne lecture.
L'équipe Delphi de Developpez.com.
- Comment chercher de l'aide dans Delphi ?
- Comment bien présenter son code ?
- Comment rechercher de l'aide sur les API Windows ?
- Comment désactiver l'affichage des exceptions ?
- Comment modifier la liste des raccourcis proposée dans la fenêtre "Ouvrir" ?
- Comment utiliser un programme externe via l'EDI ?
- Comment créer ses propres modèles de code dans Delphi ?
- Comment effectuer des tâches d'écriture ou de mise en forme répétitives dans l'EDI ?
- Quels sont les différents fichiers d'un projet Delphi ?
- Comment convertir automatiquement les DFM binaires d'un projet en DFM texte ?
- Comment créer des sections de code "pliable" ?
- Comment accélérer le lancement de Delphi 2005 en se créant des configurations séparées ?
- Comment revenir à l'interface classique style Delphi 7 avec Delphi 2005 ?
- Quelles sont les nouveautés dans l'éditeur de Delphi 2005 ?
- Quelles sont les nouveautés du langage dans Delphi 2005 ?
- Comment corriger les violations d'accès lors de l'affichage de l'aide dans Delphi 2005 ?
- Comment corriger l'erreur "Aucune aide contextuelle installée" avec Application.HelpContext dans Delphi 2005+ ?
- Pourquoi les modèles de code ne s'affichent-ils plus dans la fenêtre Templates ?
- Comment résoudre les bugs des menus "Importer un composant" et "Librairie de type" ?
- Comment obtenir un compilateur en ligne de commande sous Turbo Pro 2006 ?
- Comment mettre une sélection multilignes en commentaire rapidement sous Delphi 2009 ?
Ce sujet a pour but d'indiquer quelques techniques efficaces pour obtenir de l'aide dans Delphi, avant d'interroger le forum et le Net...
1. À l'intérieur de l'IDE Delphi
- Dans l'explorateur de code, si on positionne le curseur sur un mot clé (fonction, type), un message rectangulaire apparaît, qui précise l'unité (.pas) et la ligne dans laquelle le terme est défini.
- Exemple : Trunc -> func System.Trunc: - system.pas ( 18 )
- Sur un mot clé, F1 lance l'aide de Delphi si elle est disponible et si le fichier d'aide a été ajouté à l'aide en ligne générale.
- Après saisie du nom d'un composant, si on rajoute '.' , une liste des propriétés et méthodes du composant apparaît.
- Exemple : Edit1. -> property constraints , Font ...
- Dans l'inspecteur de propriétés, F1 dans une propriété lance l'aide sur le composant et la propriété courante.
- Pour obtenir la liste des identificateurs accessibles au moment de la frappe, il suffit de faire CTRL-ESPACE. La liste des variables, fonctions et procédures utilisables est alors affichée. Cette liste est filtrée par le début du mot déjà tapé.
2. De manière directe
- Aller dans le Menu Démarrer / programmes / Delphi / Aide et choisir l'aide spécifique à ce que l'on recherche :
- tout ce qui concerne les composants figure dans l'aide sur la "bibliothèque de composants visuels" (VCL) ;
- pour des infos sur la base de la programmation Delphi, aller dans "Référence du Pascal objet" ;
- si on ne trouve pas ce qu'on cherche, voir les aides spécifiques et plus particulièrement l'aide sur les API Windows (SDK Win32).
- Des exemples de code sont fournis dans Delphi :
- c:\program files\borland\delphi..\demos
- c:\program files\borland\delphi..\Help\Examples
Il y a un nombre important de programmeurs Delphi. Pour que le code puisse être lisible par tous sans difficulté, il convient de suivre des règles d'écriture communes.
Ces règles sont définies par Embarcadero ici.
Il existe deux sources principales d'information sur les fonctions de l'API Windows.
La première est le fichier d'aide Win32 fourni avec toutes les versions de Delphi. Celui-ci est accessible directement depuis le menu Aide de Delphi dans certaines versions. Il est toujours accessible depuis le menu Démarrer dans la rubrique Aide (ou Help) de Delphi. Cependant, ce fichier correspond à une version ancienne de l'aide de Microsoft et n'inclut que les systèmes Windows 95, Windows NT4 et Win32s.
La deuxième source d'information, plus complète, est le site Microsoft Developer's Network ou MSDN (premier lien ci-dessous).
Si vous cherchez de l'aide sur une fonction ou une message d'une API Windows, la page de recherche est accessible par le second lien ci-dessous.
Il est aussi possible de télécharger le SDK entier de Microsoft via le troisième lien ci-dessous. Il faut prendre le SDK de la version de Windows la plus récente et n'installer que l'aide. Vous disposez alors de l'aide complète, accessible bien plus facilement que sur le net.
Lien MSDN : Page de recherche
Lien MSDN : Téléchargement du SDK
Vous avez beau gérer les exceptions via un bloc try..except..end et les messages d'erreurs sont toujours présentés ? C'est parce que Delphi intercepte les exceptions avant vous, au moment même du raise.
Pour désactiver cette option, faites ceci :
Menu Outils\Options du débogueur ; Onglet Exceptions du langage ; Décocher la case Arrêter sur exception Delphi.
Il est parfois fastidieux de devoir sélectionner une suite de répertoires pour accéder à un projet. Windows offre la possibilité, au travers de la clé de registre HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\comdlg32\PlacesBar, de modifier la liste des raccourcis proposés.
Vous pouvez pour ce faire utiliser les Power Toys Tweak UI-XP (voir lien ci-dessous), Common Dialogs->Places Bar.
Si on ajoute une entrée, dans la base de registre, les raccourcis par défaut ne sont plus affichés mais la suppression de cette nouvelle entrée rétablit l'affichage des raccourcis par défaut.
Les modifications sont dynamiques, vous pouvez donc modifier les raccourcis « à la volée ».
L'utilisation du menu Outils permet l'exécution de programme tiers ou d'un script console. Voici un exemple qui permet d'ouvrir une console dans le répertoire du projet en cours dans l'EDI.
Dans le menu Outils, faites Ajouter puis renseignez les champs suivants :
- Titre : ouvrir une console dans le répertoire du projet ;
- Programme : C:\WINDOWS\system32\cmd.exe ;
- Répertoire de travail : C:\WINDOWS\system32 ;
- Paramètres : /K cd $PATH($EXENAME).
Le menu Macro vous permet de sélectionner un ou plusieurs paramètres comme $PATH et $EXENAME. À noter que la commande $PROMPT() permet la saisie de paramètres avant l'exécution du script.
L'appel d'un script DOS se fait, par exemple, en renseignant Paramètres avec :
Code : | Sélectionner tout |
1 2 | /K call "FullPath\NomScript.cmd" ParamètresDuScript |
Il existe dans l'EDI de Delphi une fonctionnalité bien intéressante : c'est la possibilité d'avoir des modèles de code. Avec cette fonctionnalité, la saisie de code peut s'avérer beaucoup plus rapide.
Par exemple à chaque fois que je veux insérer une boucle dans mon code, je tape :
Code : | Sélectionner tout |
1 2 | //On tape forb puis on fait CTRL + J dessus forb + ctrl + J |
Code Delphi : | Sélectionner tout |
1 2 3 4 | for := to do begin end; |
Mais ce n'est pas tout, nous pouvons également créer nos propres raccourcis. Pour cela, voici comment procéder :
Pour aller dans le paramétrage des modèles de code, il faut choisir dans le menu Outils, l'onglet Options de l'éditeur. Dans la fenêtre qui apparaît, nous choisissons l'onglet Options du source. Dans l'onglet qui apparaît, cliquez sur le bouton qui s'intitule : Modifier modèles de code...
Sur la fenêtre intitulée Modèles de codes qui vient de s'ouvrir, vous voyez sur la partie haute, la liste des modèles existants dans l'EDI. Cette liste a deux colonnes, la première contenant le raccourci correspondant et la deuxième une brève description du modèle. En cherchant dans la liste, nous retrouvons notre modèle 'forb'. Cliquons dessus. Nous voyons apparaître dans la partie basse de la fenêtre le source qui est généré par l'EDI lorsque nous invoquons le modèle.
Nous pouvons voir également des boutons permettant la gestion de ces modèles (Ajouter..., Modifier..., Supprimer...). Nous cliquons donc sur Ajouter....
Une boîte de dialogue nous demande alors de saisir le raccourci et la brève description de celui-ci. Pour l'exemple, nous allons créer un raccourci qui permet d'instancier un TSQLQuery sans variable d'instance, code qui me sert très souvent dans mes applications. Nommons-le tsql. Dans la description, inscrivons SQLQuery sans variable d'instance et validons.
Nous sommes revenus à l'écran de gestion des modèles avec notre nouveau modèle en bas de liste et la zone de code vierge. C'est ici que nous allons saisir notre modèle.
Saisissons le code suivant :
Code Delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 | with TSQLQuery.Create(nil) do begin try SQLConnection := | SQL.Clear; finally Free; end; end; |
Il ne reste plus qu'à cliquer sur Ok, notre modèle est prêt. Il suffit maintenant de taper :
Code : | Sélectionner tout |
tsql + ctrl + j
Pour répéter plusieurs fois la même opération dans l'EDI, vous pouvez utiliser l'enregistrement de macros :
Appuyez sur les touches [CTRL][SHIFT][R] pour lancer la séquence d'enregistrement.
Effectuez les opérations à répéter (une fois).
Utilisez à nouveau [CTRL][SHIFT][R] pour finir l'enregistrement.
Enfin, utilisez [CTRL][SHIFT][P] pour répéter l'operation que vous venez d'enregistrer.
Lors de la création et de la compilation d'une application sous Delphi, des fichiers portant différentes extensions sont générés automatiquement.
Voici leur signification :
- BPL : Borland Package Library (Librairie de package Borland) : le package compilé et chargeable. Ce fichier est une librairie partagée (DLL) contenant des spécificités propres à Borland. Le nom de base du package est le même que le fichier de source dpk.
- CAB : c'est le format de fichier que Delphi propose aux utilisateurs déployant sur le web. Ce format compressé est une manière efficace d'empaqueter de multiples fichiers.
- DBI : ce fichier texte contient les informations d'initialisation pour l'exporateur de base de données. Ce fichier ne doit pas être édité, excepté par l'explorateur de base de données.
- DCI : ce fichier texte contient le code des templates clavier prédéfinis et ceux définis par l'utilisateur de code pour l'usage dans l'EDI.
- DCP : fichier de symbole d'un package : une image binaire contenant le header du package ainsi que la concaténation de l'ensemble des fichiers dcu (Windows) ou dcu (Linux) du package. Un seul fichier dcp est créé/compilé pour chaque package. Le nom de base du fichier dcp est le même que celui du fichier source dpk.
- DCT : ce fichier binaire propriétaire contient les informations de template des composants définis par l'utilisateur. Ce fichier ne doit pas être édité, excepté par l'EDI. Depuis que ce fichier est propriétaire, le format et la compatibilité avec les futures versions de Delphi peuvent changer quelque peu.
- DCU : un fichier par fiche (TForm) ou par unité. Il contient le code compilé correspondant à la fiche ou l'unité de même nom.
Delphi utilise ces fichiers lors de la compilation. Ils ne sont recompilés que si le fichier .PAS ou DFM a été modifié.
Dans le cas d'une distribution de composants sans les sources, il sont obligatoires. - DDP : un fichier par fiche (TForm) ou par unité. Il s'agit du diagramme de conception associé, dans le cas d'une fiche il porte le même nom.
- DEM : ce fichier texte contient les quelques formats standards spécifiques à un pays pour un composant TMaskEdit.
- DFM : un fichier par fiche (TForm). Ce fichier contient les détails des composants contenus dans une fiche. Il peut être visualisé comme un fichier texte par un clic-droit sur la la forme et en choisissant le menu contextuel
Voir comme texte ou converti à l'aide de l'outil Delphi\Bin\convert.exe (à utiliser avec précaution). - DLL : un fichier par Projet. Il s'agit de la version compilée de votre projet DLL.
- DMT : ce fichier binaire propriétaire contient les informations de template des menus transportés et définis par l'utilisateur. Ce fichier ne doit pas être édité, excepté par l'EDI. Depuis que ce fichier est propriétaire, le format et la compatibilité avec les futures versions de Delphi peuvent changer quelque peu.
- DPK : fichier source d'un package : détermine quelles unités sont contenues dans le package et quels autres packages sont requis.
Analogue au fichier .DPR d'un projet Delphi standard. - DOF : ce fichier texte contient les options courantes du projet associé, telles que les options de compilation et de l'éditeur de liens, des divers répertoires, les directives de compilation conditionnelles...
A partir de Delphi 2005, ce fichier a été remplacé par le fichier .bdsproj (voir lien ci-dessous). - DRO : ce fichier texte contient des informations sur le référentiel d'objets (repository).
Chaque entrée de ce fichier contient des informations spécifiques sur chaque élément disponible dans le référentiel.
Bien que ce dossier soit un fichier de texte d'objets, évitez de le modifer dans un éditeur. Utiliser de préférence le menu de Outils|Référentiel dans l'IDE. - DSK : un fichier par projet. Il contient la description de l'environnement visuel du projet (affichages par défaut, positionnement des palettes d'outils, etc).
- DSM : un fichier par projet. Si, dans les options de projet, vous avez coché l'option enregistrement->bureau et symboles, il permet d'optimiser le chargement de Delphi et de conserver votre environnement de travail, les points d'arrêts, les fichiers chargés, etc.
- EXE : un fichier par projet. Il s'agit de la version compilée correspondant à votre application.
- MAP : un fichier par projet. Contient la description de l'implémentation mémoire des objets et unités de votre projet.
- OCX : un fichier OCX est une DLL spécialisée qui contient tout ou parties des fonctions associées à un contole ActiveX.
- OPT : un fichier par projet. Il contient la description des options de compilation, lieur, débogage, répertoires par défaut, etc.
- PAS : un fichier par fiche (TForm) ou par unité. Il s'agit du fichier source ; dans le cas d'une fiche, il porte le même nom.
L'édition d'un fichier associé à une fiche en dehors de l'EDI peut avoir comme conséquence la perte d'informations entre le fichier .DFM et le .PAS. - RES : un fichier par ressource externe (possibilité de les regrouper). Ce sont les ressources externes utilisées par l'application (bitmaps, icônes, dialogues importés, etc).
Il est créé/recréé lors d'une compilation. - RSM : ce type de fichier est généré par le compilateur (Dcc32- VR) et est utilisé pour le débogage à distance. Le fichier est placé sur la machine distante, dans le répertoire de l'application.
- TLB : le fichier binaire d'une librairie de type. Permet d'identifier les types d'objets et d'interfaces disponibles dans un serveur ActiveX.
Les fichiers nommés (~xx) sont des versions de Back-up, ils sont créés lors de l'enregistrement d'une nouvelle version par l'EDI.
Certains fichiers peuvent ne pas exister sur toutes les versions de Delphi.
Il est parfois utile de convertir de nombreux fichiers binaires .DFM en texte puis, après traitement de ces fichiers texte, de les convertir à nouveau en .DFM. Delphi propose pour ce faire le programme en ligne de commande nommé convert.exe, qui se trouve dans le répertoire d'installation de Delphi.
Pour l'utiliser, il suffit de saisir la commande :
Code : | Sélectionner tout |
convert.exe -t -i c:\nom_fichier.dfm
Vous trouverez ci-dessous un outil gratuit - et ses sources - permettant cet automatisme en mode graphique.
Sous Delphi 2005, la notion de « Pliage du code » a fait son apparition. Il s'agit de masquer des sections de code dans l'éditeur. Le pliage du code vous permet de créer une vue hiérarchique facilitant ainsi la navigation et la lecture du code, les méthodes contenues dans une région pouvant être pliées ou dépliées selon la visibilité souhaitée. Le code replié n'est pas supprimé mais seulement masqué.
On utilise la directive REGION pour réaliser cette hiérarchie, via l'insertion du code suivant :
Code Delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 | {$REGION 'Test de pliage de code'} {$REGION 'Méthodes globales'} {$ENDREGION} {$REGION 'Méthodes spéfiques et en phase de test'} {$ENDREGION} {$ENDREGION} |
Code Delphi : | Sélectionner tout |
+'Test de pliage de code'
Le menu contextuel de l'éditeur propose les menus Plier et Déplier.
Vous pouvez aussi utiliser les raccourcis clavier (texte issu de la documentation Borland) :
- pour désactiver le pliage de code pour la session d'édition en cours, maintenez enfoncées les touches Ctrl+Maj puis appuyez sur K puis sur O ;
- pour replier le bloc de code le plus proche, maintenez enfoncées les touches Ctrl+Maj puis appuyez sur K puis sur E ;
- pour étendre le bloc de code le plus proche, maintenez enfoncées Ctrl+Maj puis appuyez sur K puis sur U ;
- pour étendre tout le code, maintenez enfoncées Ctrl+Maj puis appuyez sur K puis sur A.
L'environnement de développement (EDI) fournit maintenant un support au développement d'applications Delphi pour .NET, Delphi pour Win32, et C#, mais il rare que nous ayons d'utiliser les trois dans une même session de travail.
Le soft Delphi Configuration Manager lien ci-dessous) vous permettra de configurer votre session de Delphi en choisissant par exemple de lancer uniquement l'environnement de travail Win32, ou C# Builder. Cela permet une économie non négligeable des ressources et un gain de temps lors du lancement de Delphi.
Ce soft fonctionne également avec les versions 6, 7 et 8 de Delphi.
Pour ceux qui préfèrent l'interface classique de Borland, il est possible d'y revenir facilement dans Delphi 2005 :
- menu outils->Options... ;
- dans la zone de droite, choisir Options d'environnement->Options Delphi->Concepteur VCL ;
- décocher l'option Concepteur incorporé ;
- OK, OK ;
- redémarrer Delphi 2005.
Beaucoup de nouveautés ont été ajoutées dans l'éditeur :
- Refactoring ;
- Sync Edit ;
- Error Insight ;
- Help Insight ;
- etc.
Afin de respecter les convention objet sous .NET, le langage Pascal Objet pour les applications .NET a été adapté.
Pour connaître les nouveautés du langage sous Win32 et .NET, consultez l'article ci-dessous et la FAQ Delphi .NET.
Il se peut que vous n'arriviez plus à accéder à l'aide Delphi à partir de l'IDE ; l'appui sur F1 vous affiche un message d'erreur (avec éventuellement des violations d'accès dans les modules coreide90.bpl ou htmlhelp290.bpl) :
- créer la clé HKEY_CLASSES_ROOT\AppID\DExplore.exe ;
- donner à celle-ci la valeur par défaut 'Microsoft Document Explorer' (sans quotes) ;
- ajouter ensuite une valeur chaîne appelée AppID valant {4A79114D-19E4-11d3-B86B-00C04F79F802}.
À présent, vous pourrez accéder normalement à l'aide.
Delphi 2005 utilise DExplore.exe version 7 :
Code : | Sélectionner tout |
HKEY_CLASSES_ROOT\CLSID\{4A79114D-19E4-11d3-B86B-00C04F79F802}
Code : | Sélectionner tout |
HKEY_CLASSES_ROOT\CLSID\{639F725F-1B2D-4831-A9FD-874847682010}
Il est aussi possible d'utiliser le programme freeware H2Viewer (lien ci-dessous), qui permet la visualisation des espaces de noms relatifs aux fichiers d'aide.
Pour les postes ayant Delphi 2005 et Delphi 2006 installés, on peut avoir l'aide en ligne pour les deux versions.
Il suffit de modifier la clé HKEY_CLASSES_ROOT\AppID\dexplore.exe\AppID avant de charger Delphi.
Cette erreur est due au fait que le système d'aide interfaçant WinHelp n'a pas été installé.
C'est l'unité WinHelpViewer qui se charge d'installer celui-ci. Il suffit donc de rajouter cette unité dans les
uses de votre fichier projet ou de votre unité principale :
Code Delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | program MonProgramme; uses Forms, WinHelpViewer, // <== la solution est ici MonProgMain in 'MonProgMain.pas' {FormMain}; {$R *.res} begin Application.Initialize; Application.HelpFile := 'MonFichierDAide.hlp'; Application.CreateForm(TFormMain, FormMain); Application.Run; end. |
Ce problème peut avoir plusieurs causes.
La première et la plus évidente est que vous n'avez peut-être pas de modèles de code définis pour le langage du fichier que vous éditez actuellement. Par défaut, ce sera par exemple le cas pour les pages HTML, XML etc.
Pour vous assurer de la présence ou non de modèles de code pour le langage de votre document actif, effectuez un clic droit dans la fenêtre Templates et désactivez l'item Filtrer : toutes les catégories de modèles s'affichent.
Vérifiez alors si une catégorie correspond à votre langage ou non.
S'il existe une catégorie pour votre langage et qu'elle ne s'affiche pas lorsque vous activez le filtrage, alors vous avez sûrement un modèle de code de votre propre confection qui empêche le filtrage de s'effectuer.
Cela arrive si votre fichier XML définissant le modèle contient une ou plusieurs erreurs.
Il est par exemple important de vérifier la casse dans l'attribut language de vos balises script ou de votre balise code.
D'autre part, certains attributs sont requis et non facultatifs. Ils sont mis par défaut lorsque vous créez un nouveau modèle par le biais de l'interface de BDS et il ne faut pas les supprimer.
Vérifiez la validité de vos fichiers XML, enregistrez-les en cas de modification et revenez sur votre fichier. Si le
problème est réglé, les modèles devraient s'afficher immédiatement.
Les menus Composant/Importer un composant et Voir/Librairie de type sont manquants suite à un bug.
Voici comment contourner ce problème :
- créez le répertoire suivant : $(BDS)\include\atl\ ;
- créez dans ce répertoire un fichier vide nommé : ATLBASE.H.
Désormais, les deux menus manquants sont accessibles sous Turbo Delphi Pro.
Dans sa version initiale, Turbo Professionnel n'offre pas la possibilité de compiler en ligne de commande.
Cela se révèle vraiment problématique, par exemple lorsque vous désirez installer automatiquement une collection de composants comme ceux de la JVCL.
Pour régler ce problème, téléchargez le compilateur en ligne de commande (lien ci-dessous).
À l'aide de la souris ou du clavier, sélectionnez plusieurs lignes, ensuite appuyez sur CTRL+/.
Ce raccourci clavier permet de mettre la sélection en commentaire (ajout de // à chaque début de ligne).
Rappelez le raccourci pour supprimer les commentaires.
Très utile.
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.