Convertir un entier en nom de colonne sous Microsoft Excel

Pour un développement professionnel sous Delphi, j’ai eu besoin de pouvoir convertir un entier en nom de colonne sous Microsoft Excel (typique une série de lettre en majuscule).

Donc, j’ai fait chauffer mes petites cellules grises pour produire ceci:

function MakeExcelColumnName(AValue: integer): string;
const
  ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  DIVISEUR = 26;
begin
  Result := '';
 
  if AValue > 0 then
  begin
    if AValue <= DIVISEUR then
      Result := ALPHABET[AValue] 
    else 
    while Avalue > 0 do
    begin
      Result := ALPHABET[AValue mod DIVISEUR] + Result;
      AValue := AValue div DIVISEUR;
    end;
  end;
end;

Quelques explications sur la routine, je fait un premier test pour savoir si la valeur d’entrée est bien supérieur a zéro (vu que dans un chaine de caractères comme l’est ALPHABET) la première valeur a comme index 1.

Ensuite, le deuxième test est fait pour gagner du temps en évitant de rentrer inutilement dans la boucle WHILE DO si la valeur en entrée est inférieur ou égale a 26 (qui est bien entendu la limite maximum de la chaine ALPHABET).

La boucle finale est la pour exploiter la fonction MODULO du langage PASCAL OBJET (que l’on trouve dans Delphi ou dans LAZARUS).
Continuer la lecture de « Convertir un entier en nom de colonne sous Microsoft Excel »

Rotation de texte sous Firemonkey

Pour bien comprendre la logique de rotation de texte en utilisant un TMatrix dans le Canvas d’une image sous Firemonkey, je me suis fait un exemple simple est compréhensible.

J’ai utilisé la version 10.2 Tokyo de Delphi mais avec les version antérieure (minimum XE2) devrait fonctionner.

La seule petite astuce de mon cru c’est d’avoir synchronisé l’angle de rotation d’un TArcDial avec un texte a l’horizontale en mettant par défaut  -90 degrés.
Continuer la lecture de « Rotation de texte sous Firemonkey »

Copier des tables MySQL vers SQLite

Pour des besoins de migration des bases de données MySQL vers SQLite, j’ai fait quelque tests du composant Firedac TFDBatchMove avec une grande satisfaction.

J’ai codé mon test sous Delphi avec le Framework Firemonkey plutôt que la VCL.

Dans mes premiers essais, le soucis que j’ai rencontré est qu’il fallait impérativement que les structures des tables (à l’identique) existe aussi bien sous MySQL et sous SQLite.

Continuer la lecture de « Copier des tables MySQL vers SQLite »

Stopper Antimalware Service Executable

Les manipulations a faire pour stopper ce maudit « Antimalware Service Executable » quand vous avez un programme qui fait énormément de lecture / écriture de fichiers sur votre réseau et et que cet « antimalware » met vos débits réseau ainsi que votre CPU sur les genoux :

In the latest build you can only temporarily disable Windows Defender. Here’s how to permanently disable it:

  1. Run gpedit.msc
  2. Navigate to Computer Configuration > Administrative Templates > Windows Components > Windows Defender
  3. Double click on « Turn off Windows Defender »
  4. Select « Enabled » > Apply > OK
  5. Close Group Policy Editor

Beware, you are now unprotected.