lundi 4 mars 2019

Comment développer en C++ ?

Je cherche le meilleur moyen de développer en C++ car j'ai compris que les librairies graphiques comme DirectX ou plutôt Direct3D, OpenGL, VCL, FireMonkey et autres sont écrites en langage C++ et je cherche une bonne maitrise du temps réel avec mon application, quel choix faire pour développer en C++ ?

Et oui si vous faites du développement 3D C++ pour des gamers par exemple, vous serez amené à développer en Langage C++ alors j'ai moi même quelques expériences de ce langage mais aujourd'hui je suis perplexe devant les possibilités qui s'offrent à moi et je ne sais quelle option choisir alors faisons un tour rapide de toutes ces possibilités.

J'ai travaillé récemment avec Embarcadero dont j'ai fait une abondante critique. Il possède l'avantage de démarrer un développement rapidement bien plus qu'avec Visual Studio C++ MFC par exemple. Le scandale, c'est que Microsoft conserve MFC et n'a rien fait depuis donc si vous cherchez à instancier un nouveau projet avec Visual Studio vous allez tomber sur MFC ... Grrr pas bon, méchant les MFCs !

Qt/C++ est une bonne alternative, je n'y croyais pas mais c'est d'une prise en main rapide et les contrôles utilisateurs sont intelligents, ils permettent plein de choses rapidement, je vous le conseil.

Je lis cet article : Développez.com - Graphique

Le choix est large mais pas simple, la prise en main d'une librairie graphique c'est un investissement lourd. Moi je parlais des chaines de développement associée ici pas de chaine mais alors comment cela se passe t-il ? Vous pouvez démarrer avec Eclipse.

Choix d'une application pour bien développer en C++

Que puis je faire avec Visual Studio ? Instancier un nouveau projet Windows Desktop - Assistant Windows Desktop :

Visual Studio un projet en Langage C++

Et Visual Studio me donne les choix suivants :

Visual Studio créer une application en C++

MFC and ATL
Je vous laisse avec la doc MSDN ... Et toutes ces vieilleries Microsoftiennes ...

What's New for Visual C++ in Visual Studio 2017
Si il y a encore du Nouveau en C++ sous Visual Studio 2017 ...

Microsoft - VCSamples - Visual Studio C++
On retrouve ATL CLR MFC plus d'autres exemples

Microsoft - Visual C++ Samples
On remonte encore plus haut dans les samples bien connus de Microsoft

Mais tout ceci ne nous aide pas beaucoup, je suis certain que nous sommes très très nombreux à regretter qu'il n'y ait pas d'alternative à MFC pour développer rapidement des application Desktop en C++. Depuis tout ce temps Microsoft aurait pu faire un effort.

Voilà, je tombe un peu là dans un trou à cause de Microsoft, je pensais trouver une bonne solution pour développer en C++ avec Visual Studio mais la solution moderne est sans doute ailleurs. La solution moderne pour développer en C++ c'est sans doute Qt/C++.

To Be Continued

jeudi 28 février 2019

MyString CPlusPlus Mes String en C++ StringFormat & StringSplit

StringFormat et StringSplit sont deux fonctions que l'on a toujours besoin d'avoir sous la main. Je me retrouve avec Embarcadero C++ Builder à devoir coder en C++, je tombe donc sur l'UnicodeString hérité de Delphi imaginez mon désarrois.


Coder en C++ StringSplit et StrinFormat

Je l'avoue ça fait un peu mal même si ce type est très utile sous Embarcadero, il vient du moyen âge. Pour nous faciliter la vie je souhaite donc vous livrer ici mes deux fonctions qui à mon goût, n'existent pas ni dans C++ Builder ni dans les STL.

Voici donc StringFormat et StringSplit les deux foncitons C++ qui manquent toujours à l'appel.

L'entête

#ifndef _MyStringH
#define _MyStringH

#include <iostream>
#include <conio.h>
#include <sstream>
#include <vector>
#include <string>


using namespace std;

// ---------------------------------------------------------------------------
// Mangement of Srting's Sizes

#define MAX_STRING 256
// ---------------------------------------------------------------------------
void StringFormat( UnicodeString &str, const char *format, ... );
vector<string> StringSplit( string s, string separator );
// ---------------------------------------------------------------------------
#endif

Corps des fonctions StringFormat et StringSplit en C++

//----------------------------------------------------------------------------
// Format String
//----------------------------------------------------------------------------

void StringFormat( UnicodeString &str, const char *format, ... )
{
   char buffer[ MAX_STRING ];
   va_list args;

   va_start( args, format );

   vsprintf( buffer, format, args );
   str = UnicodeString( buffer);
   perror( buffer );

   va_end( args );
}

//----------------------------------------------------------------------------
// Split string with separator
//----------------------------------------------------------------------------

vector<string> StringSplit( string s, string separator )
{
   size_t pos_start = 0, pos_end, delim_len = separator.length();
   string token;
   vector<string> res;
   while ( (pos_end = s.find( separator, pos_start )) != string::npos )
   {
      token = s.substr( pos_start, pos_end - pos_start );
      pos_start = pos_end + delim_len;
      res.push_back( token );
   }
   res.push_back( s.substr( pos_start ) );
   return res;
}

Utilisation des fonctions StringFormat et StringSplit en C++

UnicodeString b = "blabla";
double d = 2.033256;
StringFormat( b, "d = %.3f", d );
Edit1->Text = b;

//-----------------------------------------

int tab[ 4 ] = { 0, 0, 0, 0 };
string str = "0, 1,  2,  3";
string separator = ",";
vector<string> v = StringSplit( str, separator );
int j = 0;
for ( auto i : v )
{
  tab[ j++ ] = atoi( i.c_str() );
}

Conclusion

Vous pouvez adapter ces fonctions pour une autre chaîne de développement comme Qt ou Visual Studio C++ en utilisant CString à la place d'UnicodeString d'Embarcadero.

Voilà au moins comme cela la prochaine fois que je code en C++, je n'aurais pas à les rééecrire ...

;-)


mardi 26 février 2019

Embarcadero 10.3 l'intellisense, l'autocomplétion ne fonctionnent plus

Je travaille avec la version Embarcadero 10.0.3 et la future release est arrivée, c'est la version Embarcadero C++ Builder 10.3 alors je l'installe mais au bout de quelques instant je me rend compte que l'autocomplétion et l'intellisence ne fonctionne plus alors qu'ils ont fonctionnés.

Embarcadero 10.3 - Bugs
Embarcadero 10.3 - Bugs
C'est désastreux plus rien ne fonctionne, déjà que cela ne fonctionnait pas fort alors là je suis pantois les bras m'en tombent. La plus part du temps, je développe avec Visual Studio mais il m'est arrivé de devoir utiliser Embarcadero pour satisfaire l'un ou l'autre de mes clients. Je ne suis pas sectaire, j'aime toutes les chaines de développement qui fonctionnent. J'ai utilisé Qt/C++ avec beaucoup de bonheur.

Mais là, Embarcadero me déçois avec cette nouvelle release v10.3 Modernize with RAD Studio 10.3
Est-ce parce que j'ai laissé la précédente release installée sur le même post ? Ce ne serait pas professionnel de la part d'Embarcadero alors que pourtant la licence n'est pas donnée croyez-moi.

Work Space ou Espace de Travail

C'est amusant comme Embarcdero est obligé de copier sur Visual Studio de Microsoft. Dans Visual Studio on peut faire plein de choses pour améliorer sa productivité notamment particulariser sont Espace de Travail en mettant les fenêtres que l'on souhaite où l'on souhaite.

Dans Embarcadero, on peut faire quasiment faire la même chose mais c'est le quasiment qui est drôle. Si vous particularisez votre espace de travail et que vous l'enregistrez par exemple avec le nom "Mon espace de travail 1". Lorsque vous quittez Embarcadero et que vous le relancez, il se mettra systématiquement sur l'espace de travail "Espace de travail par défaut".

Vous devrez systématiquement allez rechercher votre enregistrement "Mon espace de travail 1" pour retrouvez votre espace de travail ... Mort De Rire. Sinon, vous devez sauvegarder les modifications de votre Espace de Travail dans "Espace de travail par défaut". Ce qui n'est pas logique. Ce qui serait logique c'est par exemple d'avoir un bouton "Définir comme espace de travail par défaut" ...

C'est un peu alambiqué, j'espère que vous avez compris. Embarcadero ne fonctionne pas comme vous voudriez ou comme il serait le simple et efficace de fonctionner. Embacadero fonctionne comme ses idiots de concepteurs l'ont conçu point final.

Le mode Explorateur

Là aussi c'est risible, ce serait drôle si ce n'était pas complétement stupide et du coup inutilisable mais vous avez une barre d'outils nommée à juste titre "Explorateur" alors qu'est censé faire cette barre d'outils avec ses deux boutons "Flèche avant" et "Flèche arrière".

Et bien, quand vous vous déplacez dans les fichiers de code source de votre logiciel vous pouvez "revenir d'où vous venez" en cliquant que "Flèche arrière" et vous pouvez retourner où vous étiez quand vous cliquez sur "Flèche avant". Jusque là nous sommes d'accord je crois.

Alors comment ces idiots de concepteurs d'Embarcadero on conçu leurs Flêches d'exploration ? Et bien si vous vous êtes déplacé dans le même fichier alors retour à la page d'accueil !!! Si vous vous êtes déplacé dans plusieurs fichiers alors on enregistre tout les déplacements du curseur. Non mais vous voyez un peu la stupidité du truc ... ?

Donc, la plupart du temps cette fonction ne sert à rien quand vous êtes dans le même fichier et pourtant vous pouvez avoir des fichiers qui font plusieurs milliers de lignes et vous aimeriez bien retrouver par où vous êtes passé. Et sinon si vous avez cliqué par exemple dix ou douze fois dans le même bloc de code, le fait de cliquer sur le Flèche arrière fera déplacer votre curseur avec tous ses mouvements dans le même bloc de code !!!

Quand j'ai découvert ce fonctionnement, je suis tombé de ma chaise, j'étais mort de rire mais d'un rire nerveux cette fois. Surtout quand ce truc stupide me ramène sans cesse à la page d'accueil. En plus, si elle était fermée, il l'ouvre ...

Alors pour les idiots de concepteurs d'Embacadero, voici un petit pseudo code qu'ils devraient intégrer j'espère dans la prochaine release : si mon curseur se déplace dans un bloc proche alors je n'enregistre pas les déplacements.

J'ai vérifié ce fonctionnement sur Embarcadero 10.3 ! Même stupidité !

L'Intellisense ou autocomplétion

Je suis donc revenu à la version 10.0.3 d'Embarcadero mais c'est une calamité, je ne vous dis pas comment ça rame, j'ai appelé cela : "le kidnapping de mon curseur". Pendant que ce truc rame comme cela n'est pas permis, je ne peux rien faire mon curseur est en mode attente et je ne peux pas développer mon code ! C'est inadmissible comment c'est gens chargés de cet outil Embarcadero peuvent avoir laissé cette fonctionnalité sortir ainsi "Ce n'est pas travaillable".

Je passe mon temps à attendre qu'Embarcadero veuille bien me rendre mon curseur pour travailler ! Et ma machine de développement est des plus puissante actuellement, je n'ose pas imaginer ce que cela donne sur des machines un peu plus anciennes.

Conclusion

Vous souhaitez optimiser votre production avec Embarcedero, c'est vain, vous devrez vous adapter à la lenteur et aux défauts de conception de cet outil qui par ailleurs est un super outil pour développer sous Windows.

Dommage car C++Builder dans les année 90 était le "RAD" le plus sympathique à utiliser, il n'y en avait pas d'autre.

Have fun if it's possible!

mardi 23 octobre 2018

C'est quoi QML en Qt/C++ ?

C'est un langage de description d'interface graphique permettant aux objets décrits dans le QML d'être d'une part affichés dans l'UI et d'autre part d'interagir avec le Code C++ de Qt ou un autre langage comme Python.

Développement Qt/C++

Si vous utilisez Qt Creator la création du projet doit se faire avec l'option "Qt Quick Controls Application". Bon voilà, c'est à peu prêt tout, d'aucuns diront que c'est vraiment différent des projets "standards" mais il n'y a rien de bien sorcier là dedans.

QML est un peu l'équivalent du XAML en C#.NET.

Créer une extension de QML en Qt/C++

Rien de plus facile à la page Suivante : Qt Writing Extensions with C++
Il s'agit de créer une Class qui dérive d'un objet QML de base. C'est vraiment la force de QML c'est l'équivalent des UserControls en C# c'est à dire des .ASCX.

Il y a une partie description graphique de l'objet et une partie Code qui permet de coder le comportement du contrôle utilisateur. C'est ce que l'on trouve de puis puissant.

QML est dit aussi Qt Quick dans la littérature QML.

Voilà, on ira plus loin la prochaine fois !

vendredi 5 octobre 2018

Erreur LNK2019 - Error LNK2019 - symbole externe non résolu __except_handler4_common

Une des difficultés de la coexistence du langage C et du langage C++ ce sont les conventions de nommages du LINKER et cette error LNK2019 en est le résultat. Pour trouver la solution c'est un peu la catastrophe :

Erreur des outils Éditeur de liens LNK2019

Et alors après avoir fait tout ça, je me retrouve avec une erreur :

Gravité Code Description Projet Fichier Ligne État de la suppression
Erreur LNK2019 symbole externe non résolu __except_handler4_common référencé dans la fonction __except_handler4 MFCStarterKit D:\Mabyre\Visual Studio\CPlusPlus\MFCStarterKit4.1\MFCStarterKit\MFCStarterKit\MSVCRTD.lib(_chandler4gs_.obj) 1


Merci ! Heureusement qu'il y des âmes charitables la solution se trouve ici :

https://stackoverrun.com/fr/q/8776145

Dans votre projet de bibliothèque, consultez Propriétés -> C/C++ -> Génération de code -> Runtime Library :

Il y a des chances qu'il soit réglé sur :
DLL multithread de débogage (/ MDd)

Changez cette option et mettez la à :
multithread Debug (/ MTd)

et à la reconstruction l'erreur aura disparue !


L'original de cete article dans :

https://stackoverflow.com/questions/31867018/unresolved-external-symbol-except-handler4-common-in-visual-studio-2015/44498522#44498522

Pfffff, franchement : /MDd à la place de /MTD cela ne me serait pas venu à l'idée ...

Conseil

Lorsque vous suivez les directives de la page suivante :

https://www.developpez.net/forums/d740287/c-cpp/outils-c-cpp/visual-cpp/visual-cpp-ajout-d-bibliotheque/

pour ajouter une librairie à votre projet. N'oubliez pas que vous pouvez mettre les chemins d'accès aux .lib .dll et autres en "relatif", si vous utilisez l'outil de recherche pour aller chercher les objets il mettra le chemin en "absolu" et vous aurez alors des problèmes si vous renommez ou déplacez tout ou partie de votre projet.

Tous ces soucis ont été corrigés avec Visual Studio C#.NET, c'est curieux que cela ne le soit pas pour Visual C++ ...

Have fun!

jeudi 27 septembre 2018

Visual Studio C++ StarterKit avec MFC - Installation

Vous cherchez à développer avec Visual Studio en C++ et pourquoi pas ? On va voir ce que l'on peut faire avec cette plateforme et ses outils de développement. Comment utiliser Visual Studio pour développer en C++ ?

Installation des modules Visual Studio pour le C++

Avec Visual Studio 2017 en lançant l'installeur nous avons la possibilité d'installer trois modules :

Developpment Desktop en C++ avec Visual Studio
Développement Desktop en C++ avec Visual Studio
Mais nous avons la possibilité de développer pour les plateformes mobiles iOS et Android et Windows phone :


Développement mobile en C++ avec Visual Studio
Développement mobile en C++ avec Visual Studio
On voit également un module pour Linux.

Mon projet en C++ pour Desktop avec Visual Studio

J'instancie un projet de type Visual C++ pour créer une application avec Interface Graphique utilisateur qui s'exécute sous Windows.

Fichier->Nouveau->Projet->Autres langages->Visual C++->Application de bureau

Application de bureau Windows en C++
Application de bureau Windows en C++
Le projet est instancié :
Projet Visual Studio en C++
Je l'exécute :

Exécution du projet C++ avec Visual Studio
Une toute petite interface avec un tout petit menu.

Structure du projet Visual C++

Il faut aller voir dans les ressources pour trouver les objets graphiques, dans l'explorateur de solution je clique sur WindowsProject1.rc :


Visual C++ les ressources du projet
Visual C++ les ressources du projet
En double cliquant sur IDD_ABOUTBOX je retrouve la boite de dialogue About :



Boite de dialogue About
Boite de dialogue About
Tout ça est bien joli mais il n'y a pas les MFC. Je retourne dans l'installeur et je coche la case :

Installation des MFC pour Visual C++
Installation des MFC pour Visual C++
Et maintenant j'instancie un nouveau projet avec MFC (Microsoft Foundation Class) :

Application de bureau Windows avec MFC en C++
Application de bureau Windows avec MFC en C++
En cliquant sur OK je tombe sur un véritable Wizard de configuration de mon Application MFC :


Application de bureau avec MFC - Type d'application
SPA - MDI ?
SPA - MDI ?
Puis les choix s'enchainent ...

Choix pour le style du projet
Choix pour le style du projet

Et encore des choix :
Documents composés
Documents composés
Puis en cliquant sur le bouton suivant, on progresse dans le Wizard :


Propriétés du modèle de documents
Propriétés du modèle de documents
On atteint maintenant les choix concernant l'interface utilisateur :

Fonctionnalités de l'interface utilisateur
Ces choix sont importants, il est primordial de définir ces choix au départ car il sera ensuite bien difficile d'implémenter des barres de défilement si vous n'avez pas fait ce choix au départ.

On progresse ...


Fonctionnalités avancées
On progresse ...
Classes générées
On progresse

Classes de base
C'est incroyable tous les choix qu'il faut faire pour utiliser les MFS avec Visual C++.
On instancie le projet ...

Structure du projet Visual C++ MFC

C'est un peu plus compliqué ...

Visual Studio C++ Projet MFC
Visual Studio C++ Projet MFC
A l'exécution on obtient une application d'une complexité ... superbe !

Template d'application Visual C++ MFC
Template d'application Visual C++ MFC
Dont l'icône est :

Ajouter une légende

Pour la suite, je vous laisse avec un peu d'anglais

MFC - Quick Guide
Voici un Guide Tuto très complet sur le développement d'application de type MFC avec Visual C++

L'essentiel :
Votre application dérive de CWinApp : Class pour les Applications Windows

Developpez.com - Démarrer avec les MFC sous Visual C++
Egalement très bien pour démarrer, le problème c'est que c'est un PDF et pour le consulter il faut le télécharger. Le style est un peu ancien 2005 !

Accès aux ressources de l'application

Dans "Explorateur de solution" en cliquant sur le fichier .rc, la fenêtre d'affichage des ressources s'ouvre :
Ressrouces de l'applciation MFC C++
Affichage des ressources de l'application

Le code C++ au démarrage de l'application MFC

Dans l'Explorateur de solutions dans Fichiers sources : MainFrm.cpp (Main Frame) on atteint le code exécuté au démarrage de l'application :

Main Frame de l'application MFC C++
Main Frame de l'application MFC C++
En mettant un point d'arrêt dans la fonction OnCreate de CMainFrame :


Exécution du code de démarrage de l'application
Exécution du code de démarrage de l'application
Dans la pile d'appels on est appelé par wincore.cpp :

Appel de OnCreate par WindowProc de wincore.cpp
On accède au code de création de l'application MFC pour modifier ajouter ou supprimer des éléments graphiques de l'application.

Les MFC Microsoft Foundation Class

Les Microsoft Foundation Class ont donné des cauchemard à des générations entières de développeurs tellement abscons ! Il me faut prendre ici quelques notes en provenance du document :

ftp://ftp-developpez.com/farscape/tutoriels/demarrer-mfc-vc6.pdf

La notation hongroise, cela m'avait échappé en effet ...

C++ MFC notation hongroise

Ce PDF est véritablement le moyen de démarrer avec les MFC. C'est dommage que depuis le temps Microsoft n'ait pas proposé une alternative simple aux MFC. On ne peut pas parler de RAD (Rapid Application Development) avec les MFC c'est fastidieux long et pénible de développer avec ça.

Voilà c'est tout pour l'instant, c'était pour fixer rapidement les idées autour des applications Visual C++ avec MFC pouvoir modifier une ressource changer un peu le code au départ.

Conseil sur les MFC

Vous souhaitez développer une application Desktop pour Windows utilisez plutôt les WinForm C# c'est tellement plus agréable et efficace.

Have fun!

lundi 28 août 2017

Embarcadero déploiement d'une application stand alone pour Windows

Vous avez développé une application en C++ avec Embarcadero et maintenant vous aimeriez qu'elle fonctionne sans devoir copier dans le répertoire d'exécution toutes les DLL nécessaires à l'exécution de l'application.

C'est le genre d'information que l'on peut mettre du temps à trouver dans la documentation alors je vous livre la solution. Dans les options du projet allez chercher : Options de projet -> Lieur C++ -> Lier avec la bibliothèque d'exécution Delphi :

bibliothèque d'exécution Delphi et RTL Dynamique
Dans les options de Package : Option de projet->Packages-> Lier avec les packages d'exécution :

Lier avec les packages d'exécution

Have fun! Et surtout n'oubliez pas ce n'est que du soft !

vendredi 25 août 2017

MSDN MoveFile the Ultimate Code to Help User to know what happen

This king of function "MoveFile" is well rotten, it's made several times I have to deal with this function I remenber each time it was hell. I don't remenber the solution, so this time I will take a note for all of us.

Why this this function is so rotten, because of error message: "access denied" or "could'nt find file" wich means nothing for the user but the function failed to Move Your Files! And it is hard to find why.

Why in english? Because I did not find any solution really good in all over the documentation around the world.

If you look at his page:

https://msdn.microsoft.com/en-us/library/windows/desktop/aa365239(v=vs.85).aspx

you can see there is a probleme ; there is not enough explainations.

Embarcadero is needed in C++.

There is my code:

#define PATH_BACKUP "C:\\Temp\\"
#define PATH_BACKUP_DIR "C:\\Temp\\Save\\"
#define PATH_DIR_TO_BACKUP "C:\\MyDirectory\\Data\\Save\\"


UnicodeString backupADirectory()
{
    UnicodeString message;
    PrintLog( "backupADirectory(" );

    // If it exist, delete and recreate destination directory
    if ( TDirectory::Exists( PATH_BACKUP_DIR ) )
    {
        TDirectory::Delete( PATH_BACKUP_DIR, true ); // Recursive = true
    }

    // Directory should exist for MoveFile
    if ( TDirectory::Exists( PATH_BACKUP ) == false )
    {
        TDirectory::CreateDirectory( PATH_BACKUP );
    }

    //
    // Moves an existing file or a directory, including its children.
    // From an Existing File to a New File.
    // The New Name must not already exist.
    //
    if ( MoveFile( PATH_DIR_TO_BACKUP, PATH_BACKUP_DIR ) == 0 )
    {
        //
        // If a FileBrowser is open on a directory to backup
        // the message is: Accès refusé
        //

        LPVOID lpMsgBuf;
        FormatMessage
        (
            FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
            NULL,
            GetLastError(),
            MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
            (LPTSTR) &lpMsgBuf,
            0,
            NULL
        );

        string smsg = ( const char* )lpMsgBuf;
        String sMsg = smsg.c_str();
        sMsg = sMsg.SubString( 0, sMsg.Length() - 2 );
        message = UnicodeStringFormat( L"Error Moving files: %s", sMsg ) ;

    }
    else
    {
        message = L"Files Moved";
    }
    return message;
}

Have Fun! And don't forget it's only software.

Embarcadero Templates

Quels sont les templates que l'on peut instancier avec Embarcadero quelles sont leurs structure ? Les prérequis sont d'avoir installé une version de RAD Studio Embarcadero C++.

Et l'on fait : Fichier->Nouveau->Autres...

Templates d'applications
Les Options de la Console

Application VCL « métropolis »

La structure de l'application VCL métropolis :


Structure d'une application VCL Métropolis

Voici donc très rapidement un tour des applications que l'on peut instancier avec Embarcadero. C'est à dire à peu prêt rien. Imaginez le retard pris par les gens qui développent encore avec ce truc.

To Be Continued


CodeSite sous Embarcadero - L'outil ultime de Trace Log

Pour Tracer, Logger, il vous faut trouver le bon outil. En juillet 2015 Embarcadero rachète les composants et le produit CodeSite de Raize Software et nous voilà donc avec très un bel outil de Trace Log dans des File Viewer ou Live Viewer sous Embarcadero, c'est l'outil complet de Traces et Logs.

Accès par le menu:

Embarcadero->Outils->CodeSite

Le CodeSite Controller donne accès à quelques options de configuration de l'outil.

CodeSite Controller

CodeSite Controller

Et donc voici mes première traces en Live dans le Live Viewer :

Le Live Viewer de Code Site sous Embarcadero

L'intégration de cet outil de Trace avec un Viewer est quelque chose de différenciant par rapport à d'autres chaînes de développement qui ne propose absolument pas ce genre de chose aussi pratique.

Fonctionnalités vraiment cool

Always on top :

Fonctionnalité "Always on top" du Live viewer CodeSite sous Embarcadero

Oui, quand vous adoptez cet outil, vous ne pouvez plus vous en passer et il vous le faut sous les yeux en permanence et donc cette fonctionnalité "Always on top" est bien cool.


mercredi 21 juin 2017

On me parle de Embarcadero XE5 en Langage C++ C'est quoi cet environnement ?

J'ai pratiqué le développement RAD (Rapid Application Development) à l'époque avec le produit de Borland qui s'appelait Borland C++ Builder alors Embarcadero XE5 c'est quoi ?

D'ailleurs le net est devenu tellement mauvais, il y traîne de vieux messages poubelles que personne ne supprime et qui polluent. Ainsi en tapant "borland c++ builder 6" vous tomberez sur l'un d'entre eux ... datant de 2014 ! Il me semble bien que Borland C++ Builder n'existe plus ... dans mes souvenirs il était devenu Inprise.

Alors pour "Embarcadero xe5 c++" on me propose la chaîne de développement "en solde" ICI. C'est le premier résultat qui sort, comme c'est payant pour eux je clique ça leur apprendra !

En plus on ne trouve rien sur ce site !

Le deuxième lien semble plus prometteur :

Embarcadero C++ Builder
Compilateur C++ basé sur Clang ? pour windows 32 & 64 bits iOS et Android.
Puis on me propose d'en savoir plus sur la prise en charge du C++ moderne dans C++ Builder
J'y vais ... là on est dans le vif du sujet.

On y retrouve une description de la prise en charge de la norme C++11.

Concernant les contrôles utilisateurs :
MFC vous donne des cauchemars ? Vous trouvez wxWidgets trop basique ? VCL propose une trame incomparable qui encapsule les contrôles natifs Windows et surpasse tous les autres frameworks.

J'aime bien la phrase "MFC vous donne des cauchemars" car c'est le cas. MFC a donné des cauchemars à tous ceux qui ont eu à faire à elle. C'est le librairie des contrôles utilisateur de Microsoft, Microsoft Foundation Class.

VCL c'est pour Visual Component Library, tous les contrôles utilisateurs de la VCL dérivent de TObject. VCL vient du Delphi.

Notes diverses sur embarcadero :

La VCL est incompatible avec FireMonkey (FMX) une autre librairie de composants graphiques.

Concernant les Styles, il est possible de convertir un style pour VLC en style pour FMX.

VLC extends the RTL (Run Time Library) implementation of actions

Donc c'est quoi embarcadero ?

C'est un IDE donc la palette d'objets graphiques est soit du VLC (issu de Delphi) soit du FireMonkey ou les deux combinés.

Pour finir, vous pouvez démarrer  en vous enregistrant pour débuter votre période d'évaluation gratuite :

CX C++ Builder
Maintenant, on sait ce qu'est Embarcadero ! Concernant XE5 c'est une ancienne version de cet environnement.

Et pour la suite le Tuto c'est Ici.

Have fun !