Le développeur Delphi écrit en Object Pascal des applications Windows avec la VCL, ou multiplateformes avec FireMonkey, reliées à SQL Server, Oracle, Firebird ou InterBase. Une grande partie du travail porte sur des logiciels existants : nouvelles fonctions, corrections, montées de version de l'IDE. Les offres publiées en France sont peu nombreuses. Elles demandent surtout Delphi avec SQL, parfois avec PL/SQL ou une part de Java.
Embarcadero a sorti Delphi 13 Florence en septembre 2025, puis des mises à jour jusqu'à la 13.2. Cette version ajoute une expression conditionnelle avec if, les opérateurs is not et not in, et un IDE complet en 64 bits. Si le CV s'arrête à Delphi 7 ou 2007, l'écart avec les versions récentes porte sur Unicode, présent depuis Delphi 2009, les génériques, le 64 bits et FireDAC.
Delphi ne libère pas les objets à la place du développeur, sauf pour les chaînes, les tableaux dynamiques et les interfaces. Les questions sur Free, try...finally et le propriétaire des composants montrent vite qui a maintenu une grosse application. Le PDF compte 30 questions sur six axes et un cas de 20 minutes sur la migration d'une application Delphi 7.
Delphi, ses frameworks et ses accès aux données
Object Pascal
Le langage de Delphi, compilé en code natif. Les objets se créent et se libèrent à la main, avec Free et des blocs try...finally, alors que les chaînes, les tableaux dynamiques et les interfaces sont gérés par comptage de références. Les génériques et les méthodes anonymes existent depuis Delphi 2009, la RTTI étendue depuis 2010.
VCL
La bibliothèque d'interface pour Windows : fiches, composants visuels, contrôles liés aux données. Les versions récentes ajoutent les styles VCL, la gestion des écrans haute résolution et WebView2 avec TEdgeBrowser. La plupart des applications de gestion en Delphi reposent sur elle.
FireMonkey (FMX)
Le framework multiplateforme de Delphi, pour Windows, macOS, Linux, iOS et Android. Ses composants diffèrent de ceux de la VCL : porter un écran VCL vers FireMonkey revient à refaire la fiche. Le code métier, lui, se partage s'il est séparé de l'interface.
FireDAC
La couche d'accès aux données livrée avec Delphi, qui se connecte à plus de vingt bases, dont SQL Server, Oracle, PostgreSQL, Firebird et SQLite. Elle remplace le BDE, abandonné depuis longtemps, et souvent dbExpress. Elle gère requêtes paramétrées, transactions, lecture à la demande et insertions en masse (Array DML).
Composants tiers
DevExpress, TMS, FastReport, Indy, et parfois des composants dont l'éditeur a disparu. Chaque montée de version de Delphi demande une version compatible de chaque paquet, ou ses sources. C'est souvent ce point qui bloque une migration, demandez comment la personne l'a déjà traité.
TThread et System.Threading
TThread et la bibliothèque de tâches (TTask, TParallel) sortent un traitement du thread principal. La VCL n'est pas thread-safe : toute mise à jour de l'écran passe par Synchronize ou Queue. Une application qui se fige pendant un calcul montre que ce n'est pas fait.
FastMM, madExcept et DUnitX
FastMM, le gestionnaire de mémoire de Delphi, signale les fuites à la fermeture de l'application. madExcept ou EurekaLog produisent un rapport avec la pile d'appels quand une exception survient chez un utilisateur. DUnitX sert aux tests unitaires, encore rares dans le code ancien.
RAD Studio 13
L'environnement de développement d'Embarcadero, vendu en plusieurs éditions, avec une Community Edition gratuite sous conditions. La version 13 Florence apporte un IDE 64 bits complet et des composants d'IA qui se connectent à plusieurs fournisseurs de modèles. La mise à jour 13.1 ajoute la cible Windows sur Arm (Arm64EC).
Le poste prend deux formes. Le développeur Delphi de maintenance fait évoluer une application de gestion ou un logiciel installé chez des utilisateurs, et corrige les anomalies remontées par le support. Le profil senior ou expert mène les migrations : sortie du BDE, passage à Unicode et au 64 bits, remplacement de composants abandonnés, parfois découpage de l'application pour exposer des services REST. Dans les deux cas, le code a été écrit par d'autres, souvent sans tests. Les offres ne demandent pas de certification Delphi, l'expérience se vérifie en entretien et sur du code.
Sur quoi noter un développeur Delphi
- Object Pascal et gestion de la mémoire
- VCL, FireMonkey et composants
- Accès aux données avec FireDAC et SQL
- Threads et performance
- Migration de versions Delphi
- Build, tests et diagnostic en production
Cinq questions pour un développeur Delphi confirmé ou senior
Chaque question vient avec ce qu'une bonne réponse contient et le signal qui doit vous alerter. Pas besoin d'être technique pour les poser : écoutez si le candidat raconte du vécu.
Question 1 · confirmé
À la fermeture de l'application, FastMM signale des fuites sur des objets TCustomer rangés dans une TObjectList<TCustomer>. Où cherchez-vous ?
Une bonne réponseD'abord la propriété OwnsObjects : vraie par défaut, mais si la liste a été créée avec False, elle ne libère pas ses éléments. Ensuite les objets retirés avec Extract, qui ne sont plus libérés par la liste, et la liste elle-même, peut-être jamais libérée faute de try...finally. Il active ReportMemoryLeaksOnShutdown en débogage et le mode debug complet de FastMM pour voir la pile d'allocation de chaque objet perdu.
Signal d'alerte« Delphi a un ramasse-miettes », ou mettre toutes les variables à nil en espérant que cela libère la mémoire.
Question 2 · confirmé
Un calcul de trente secondes fige la fenêtre. Vous le passez dans un TThread. Comment mettez-vous à jour la barre de progression ?
Une bonne réponseLa VCL n'est pas thread-safe : le thread ne touche jamais directement aux contrôles. Il passe par TThread.Synchronize, qui attend l'exécution dans le thread principal, ou TThread.Queue, qui n'attend pas, en limitant la fréquence des mises à jour. L'annulation passe par Terminated, testé dans la boucle. Les exceptions du thread sont récupérées, par exemple dans OnTerminate. TTask.Run avec TThread.Queue fonctionne aussi.
Signal d'alerteApplication.ProcessMessages dans la boucle comme solution, ou la barre modifiée directement depuis le thread.
Question 3 · confirmé
Un import de 100 000 lignes dans SQL Server exécute un INSERT par ligne avec un TFDQuery et prend vingt minutes. Comment l'accélérez-vous ?
Une bonne réponseUne requête paramétrée préparée une seule fois, puis l'Array DML de FireDAC : Params.ArraySize, des valeurs remplies par index et un Execute qui envoie le lot entier. Une transaction par lot au lieu d'un commit par ligne. Aucun composant lié aux données à rafraîchir pendant l'import (DisableControls). Pour de très gros volumes, l'outil de chargement en masse de la base.
Signal d'alerteUn commit automatique par ligne, et le texte SQL reconstruit à chaque passage dans la boucle.
Question 4 · senior
Une application Delphi 7 doit passer en Delphi 13. Qu'est-ce que le passage à Unicode risque de casser ?
Une bonne réponseDepuis Delphi 2009, string est une UnicodeString et Char fait deux octets. Le code qui utilise une string comme tampon d'octets (flux, fichiers binaires, BlockRead) casse, comme celui qui suppose SizeOf(Char) = 1. Les appels à l'API Windows en version A, les lectures et écritures de fichiers texte (encodage, BOM, TEncoding), le mapping des champs varchar et nvarchar, et les composants tiers sont à revoir. Les octets bruts passent par TBytes, et AnsiString ne reste que là où c'est voulu. Les avertissements du compilateur sur les conversions guident le travail.
Signal d'alerte« Il suffit de recompiler », ou remplacer toutes les string par AnsiString dans le projet.
Question 5 · senior
L'application utilise encore le BDE avec des TTable et des TQuery sur des tables Paradox. Comment la passez-vous sur FireDAC et SQL Server ?
Une bonne réponseDeux chantiers. Les données : migration des tables Paradox vers SQL Server avec contrôle des types, des index, des champs auto-incrémentés, des dates et du jeu de caractères, puis comparaison des comptes de lignes. Le code : TDatabase devient TFDConnection, TQuery devient TFDQuery, et l'outil reFind fourni avec RAD Studio applique des règles de renommage. Le vrai travail porte sur les TTable : un parcours de table entière qui passait sur Paradox devient lent sur SQL Server et doit être réécrit en requêtes filtrées. Il avance module par module et teste les états.
Signal d'alerteRenommer les composants et considérer la migration terminée, en gardant des TTable ouverts sur de grosses tables.
Recevez la fiche d'entretien complète en PDF
La fiche pour mener l'entretien de bout en bout, prête à imprimer ou à partager avec le manager.
- 30 questions sur 6 axes, avec la bonne réponse, le signal d'alerte et la relance
- Le niveau visé pour chaque question
- Une mise en situation de 20 minutes et ce qu'on attend du candidat
- La grille d'évaluation de 1 à 4, axe par axe
Recruter un développeur Delphi aujourd'hui, les questions qui reviennent
Un développeur C# peut-il prendre un poste Delphi ?
Oui, s'il accepte de gérer la mémoire à la main. La syntaxe Pascal se lit vite, et C# a hérité de Delphi plusieurs idées, dont les propriétés et les événements. La difficulté vient de la libération des objets, du propriétaire des composants, de la VCL et des habitudes du code ancien. Comptez quelques semaines avant l'autonomie sur une grosse application. En entretien, faites-lui écrire la création et la libération de deux objets avec try...finally.
Faut-il exiger une version précise de Delphi dans l'offre ?
Indiquez votre version actuelle et votre version cible, sans en faire un filtre. Un développeur passé par Delphi 2009 ou plus récent connaît Unicode et les génériques. Un profil resté sur Delphi 7 peut convenir pour de la maintenance, moins pour une migration. Si vous prévoyez de passer à Delphi 13, demandez une migration déjà menée, avec les problèmes rencontrés et leur solution.
Comment organiser un test technique sans licence RAD Studio ?
Un extrait de code suffit : une procédure qui crée des objets sans try...finally, une requête construite par concaténation, un thread qui modifie un contrôle VCL. Demandez à la personne de trouver les problèmes et de proposer la correction. Si un exercice sur machine est utile, la Community Edition gratuite permet de le faire, sous réserve de ses conditions d'usage. Vingt minutes sur du code ancien en disent plus qu'un algorithme.
VCL ou FireMonkey : quelle expérience rechercher ?
Celle de votre application. La plupart des logiciels de gestion en Delphi sont en VCL, sous Windows, et l'expérience FireMonkey n'y apporte pas grand-chose. Si vous visez macOS, le mobile ou Linux, FireMonkey devient indispensable, avec ses styles et son modèle de composants différent. Un profil qui a porté une application VCL vers FireMonkey sait ce qui se réutilise et ce qui se réécrit.
Pour structurer vos autres entretiens, consultez aussi nos pages sur les questions d'entretien de recrutement, la méthode de l'entretien structuré et la grille d'évaluation d'entretien.





