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

That's All Folks!

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.