Execute News

Des nouvelles fraîches de http://www.execute.frRSS « Avant | Après » | Expérience[×]

Portage de Windows vers Linux et les dates

Publié le 15/02/2021 [Delphi] [Expérience]
après mes problèmes d'accents, voici les problèmes de dates :)

si mes serveurs Windows sont généralement en français, ce n'est pas le cas du serveur Linux sur lequel j'ai déployé ma solution.

les fonctions de conversion Date/String posent alors des problèmes que l'on solutionne assez facilement finalement !

{$IFDEF LINUX}
  FormatSettings := TFormatSettings.Create('fr-FR');
{$ENDIF}


bon ok, ça serait plus propre de gérer les dates sans dépendre de FormatSettings...mais c'est une solution rapide au problème.

Portage de Windows vers Linux et les accents

Publié le 22/01/2021 [Delphi] [Expérience]
Je le note ici pour m'en souvenir.

j'ai porté une application Windows sous Linux (toujours sous Delphi) et je rencontre des problèmes d'accents sur les AnsiString...cela vient de ce que la page de code par défaut de Linux n'est pas la même que celle de Windows (pour un Windows français en tout cas). Pour assurer une meilleur comptabilité, il est possible de fixer la page de code par défaut.

{$IFDEF LINUX}
  SetMultiByteConversionCodePage(1252); // https://fr.wikipedia.org/wiki/Windows-1252
{$ENDIF}


Voilà !

Pourquoi je n'aime pas les overloads

Publié le 06/12/2019 [Delphi] [Expérience]
Je n'ai jamais aimé la possibilité de créer plusieurs fonctions portant le même nom mais avec différents paramètres (overload).

Je viens de taper un code utilisant les RTTI qui exprime bien en quoi cela rend les choses ambiguës

begin
  case TypeInfo.Kind of
    tkInteger: Result := IntToStr(TypeInfo.GetOrd(Instance));
    tkInt64  : Result := IntToStr(PInt64(Instance)^);
  end;
end;


On a ici un code qui cherche à déterminer le type d'une variable pour appeler dans les deux cas la fonction IntToStr()...sauf que dans le premier cas c'est un Integer et dans le second un Int64, ce n'est donc PAS la même fonction qui est invoquée !

function IntToStr(Value: Integer): string; overload;
function IntToStr(Value: Int64): string; overload;


j'aurais préféré deux fonctions distinctes

function IntToStr(Value: Integer): string;
function Int64ToStr(Value: Int64): string;


voir, éventuellement

function IntToStr(Value: Integer): string; inline; // appelle Int32ToStr()
function Int32ToStr(Value: Int64): string;
function Int64ToStr(Value: Int64): string;

De la beauté du code

Publié le 14/08/2019 [Expérience]
De mon expérience, il n'est pas chose facile de garder le code d'une application propre au cours du temps.

Development.jpg

DDU à la rescousse !

Publié le 21/01/2019 [Games] [Expérience] [Hardware]
Bonjour,

Cela fait deux fois que DDU me sauve la mise...sur un nouveau PC MSI sous Windows 10, la mise à jour October a fait foirer la carte son Realtek...c'est beau un écran 4K mais sans le son c'est moins sympa.

J'ai tout essayé, supprimé le périphérique réinstallé le driver, rien n'y faisait...j'ai sollicité le support MSI qui m'a gentiment répondu de supprimer le driver existant avec DDU...et hop ! une fois réinstallé tout fonctionne !

J'aurais du le savoir, j'ai déjà utilisé DDU pour réinstaller un driver nVidia qui ne reconnaissait plus sa carte :)