Bonjour !
Je poste cette question dans le sous-forum Free Pascal, parce que j'utilise l'unité LConvEncoding de Lazarus dans une application console compilée directement par Free Pascal.
J'étais en train de faire des recherches sur l'encodage du symbole euro (€) et sur la variable FormatSettings.CurrencyString.
J'ai observé quelque chose que je ne m'explique pas, à savoir que le simple fait de déclarer l'unité LConvEncoding en tête de mon programme a un effet que l'exemple suivant met en évidence.
Sauriez-vous comment le simple fait de déclarer l'unité peut produire cet effet ? Et quel est cet effet justement ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 {$ASSERTIONS ON} {.$DEFINE USELCONVENCODING} uses sysutils {$IFDEF USELCONVENCODING} , lconvencoding {$ENDIF} ; begin {$IFDEF USELCONVENCODING} Assert(Length(FormatSettings.CurrencyString) = 3); //Assert(FormatSettings.CurrencyString = #8364); // Warning: Implicit string type conversion from "AnsiString" to "WideString" Assert(FormatSettings.CurrencyString = AnsiString(#8364)); {$ELSE} Assert(Length(FormatSettings.CurrencyString) = 1); //Assert(FormatSettings.CurrencyString = #128); // Assertion failed Assert(FormatSettings.CurrencyString[1] = #128); {$ENDIF} WriteLn('ok'); ReadLn; end.
Question subsidiaire, pourquoi l'assertion FormatSettings.CurrencyString = #128 échoue-t-elle ?
Je me sers pour compiler mon programme (c'est sous Windows) du script suivant :
Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 set ver=3.0.2 set path=c:\fpc\%ver%\bin\i386-win32 if not exist .\units md .\units fpc.exe -Mdelphi -Fuc:\lazarus\components\lazutils -FU.\units %1
Partager