Peut-on utiliser C++ Builder 5 en 2026 ?


La réponse est oui.

Si vous disposez du CD-ROM d’installation et d’un ordinateur doté d’un lecteur de CD intégré comme autrefois1,

il est alors toujours possible d’installer C++ Builder 5 et de l’utiliser sous Windows 11. La seule précaution à prendre sera de ne pas installer ce progiciel à la racine du disque dur mais à un niveau supérieur dans l’arborescence par exemple dans

C:://utilisateur//cppbuilder 

où “utilisateur” est un répertoire qui a été créé par le propriétaire de l’appareil2.

Cela dit, si vous manipulez des fichiers texte standard d’extension .txt lisibles par le petit Notepad avec le composant TMemo ou encore TStringList, ça marchera dans votre propre environnement avec les instructions classiques LoadFromFile et SaveToFile mais il risque d’y avoir des difficultés d’affichage (e.g. lettres accentuées présentées bizarrement et illisibles etc.) avec les fichiers d’extension .txt modernes au format UTF-8. Il faut alors utiliser l’API Windows pour convertir le format ANSI en UTF-8 et inversement. Ces conversions sont inutiles si vous utilisez Visual Studio (Community 2026) du fait que le logiciel de Microsoft est à jour dans ce domaine mais sont presque obligatoires avec le très ancien C++ Builder 5.

Imaginons qu’on veuille programmer un petit éditeur de texte pour le compilateur typst.exe qui crée un PDF (Portable Document Format), il faudrait alors procéder à de telles conversions pour que ça marche. Par exemple, pour lire le fichier d’extension .typ dans Memo1, on pourrait écrire ceci, où CA_fictyp est un AnsiString qui contient le nom du fichier d’extension .typ (compilable par typst.exe)3.

FILE* f = fopen(CA_fictyp.c_str(), "rb");
if (f)
   {
   int wideLen, ansiLen;
   long size;
   char *utf8, *ansi;
   wchar_t* wide;

   fseek(f, 0, SEEK_END);
   size = ftell(f);
   fseek(f, 0, SEEK_SET);
   utf8 = new char[size + 1];
   fread(utf8, 1, size, f);
   utf8[size] = 0;
   fclose(f);

   // Supprimer BOM si présent
   if (size >= 3
      && utf8[0] == (char)0xEF
      && utf8[1] == (char)0xBB
      && utf8[2] == (char)0xBF)
         {
         memmove(utf8, utf8 + 3, size - 3);
         utf8[size - 3] = 0;
         }

   // 1. UTF-8 ? UNICODE (wchar_t*)
   wideLen = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, NULL, 0);
   wide = new wchar_t[wideLen];
   MultiByteToWideChar(CP_UTF8, 0, utf8, -1, wide, wideLen);

   // 2. UNICODE ? ANSI Windows-1252
   ansiLen = WideCharToMultiByte(CP_ACP, 0, wide, -1, NULL, 0, NULL, NULL);
   ansi = new char[ansiLen];
   WideCharToMultiByte(CP_ACP, 0, wide, -1, ansi, ansiLen, NULL, NULL);

   Memo1->Lines->Text = AnsiString(ansi);

   delete[] utf8;
   delete[] wide;
   delete[] ansi;
   }

Pour sauvegarder le contenu de Memo1 dans le fichier, on écrit par exemple ce qui suit.

FILE* f = fopen(CA_fictyp.c_str(), "wb");
if (f)
   {
   int len, utf8len;
   // BOM UTF-8
   unsigned char bom[3] = {0xEF, 0xBB, 0xBF};
   AnsiString ansiText;
   char* utf8;
   wchar_t* wide;

   fwrite(bom, 1, 3, f);
   // Contenu (conversion ANSI->UTF8 via Windows API)
   ansiText = Memo1->Lines->Text;
   len = MultiByteToWideChar(CP_ACP, 0, ansiText.c_str(), -1, NULL, 0);
   wide = new wchar_t[len];
   MultiByteToWideChar(CP_ACP, 0, ansiText.c_str(), -1, wide, len);
   utf8len = WideCharToMultiByte(CP_UTF8, 0, wide, -1, NULL, 0, NULL, NULL);
   utf8 = new char[utf8len];
   WideCharToMultiByte(CP_UTF8, 0, wide, -1, utf8, utf8len, NULL, NULL);
   fwrite(utf8, 1, utf8len-1, f);  // -1 pour supprimer \0 final

   fclose(f);
   delete[] wide;
   delete[] utf8;
   }

Dans ces conditions, même avec cette ancienne version de C++ Builder, ça marchera parfaitement. Quant à la compilation du fichier avec typst.exe, on peut utiliser ShellExecute, comme par exemple ceci, sous réserve que le compilateur typst.exe ait été préalablement installé dans le répertoire C://chemin//vers.

AnsiString A;

// enregistrement de Memo1 dans le fichier CA_fictyp
enreg();

// ordre de compilation
A="compile "+CA_fictyp;

ShellExecute(NULL,
            "open",
            "C://chemin//vers//typst.exe",
            A.c_str(),
            NULL,
            SW_HIDE
            );

Vous pouvez télécharger les versions C++ Builder 5 et Visual Studio Community 2026 de cet utilitaire ci-dessous.

En conclusion, C++ Builder 5 est toujours opérationnel en 2026 sous Windows 11.

  1. Il semble que les streamings sur Internet aient dissuadé les constructeurs d’inclure un lecteur de CD-DVD dans leurs machines, sans compter le volume de l’appareil et sa surchauffe possible. ↩︎
  2. Ça marcherait toujours en installant le programme à la racine mais un avertissement (warning en anglais), donc non bloquant par définition, assez peu compréhensible s’afficherait à chaque exécution du logiciel sans qu’on puisse le résoudre, celui-ci se trouvant parfois caché dans certains contextes par une ou plusieurs fenêtres, en sorte que l’ordinateur est bloqué aussi longtemps qu’on n’a pas cliqué sur le bouton OK de cette petite fenêtre d’affichage. L’utilisateur non prévenu risque de croire à un plantage de son ordinateur alors qu’il suffit de réduire ou de fermer les fenêtres qui cachent cet avertissement pour pouvoir cliquer sur OK et débloquer la situation. Cela tient apparemment au fait que Windows a durci au fil des années la possibilité de création de fichiers et d’écriture en général au premier niveau alors qu’elle est évidemment libre dans les couches suivantes de l’arborescence du disque dur. Si vous êtes dans ce cas-là, vous pourriez désinstaller C++ Builder 5 et le réinstaller ailleurs qu’à la racine du disque dur pour échapper à ce désagrément. ↩︎
  3. Le fichier CA_fictyp (Constante AnsiString fichier d’extension .typ) est censé se trouver dans le même répertoire que le programme qui exécute cette fonction, sinon il faut évidemment en préciser le chemin complet. ↩︎


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *