Code: Alles auswählen
program ConsoleTemplate;
{$mode objfpc}{$H+}
{$ModeSwitch UnicodeStrings}
uses
SysUtils;
var
test : string;
begin
test := Format( '%d', [10] );
WriteLn( test );
ReadLn;
end.
Code: Alles auswählen
program ConsoleTemplate;
{$mode objfpc}{$H+}
{$ModeSwitch UnicodeStrings}
uses
SysUtils;
var
test : string;
begin
test := Format( '%d', [10] );
WriteLn( test );
ReadLn;
end.
D.h. es gibt keine Unicode Version von Format Funktion? Man müsste Ansistring nach UnicodeString selbst umwandeln?af0815 hat geschrieben: Di 26. Sep 2023, 16:10 Format ist aus der RTL und die wird nicht durch eine einfache deklaration von ModeSwitch geändert. die RTL wird zusammen mit dem fpc fix erstellt und ist kein Bestandteil von Lazarus.
Wenn man sich den Link zum FPC ansieht, sieht es so aus, als würde das zutreffen, das man selbst umwandeln muß.D.h. es gibt keine Unicode Version von Format Funktion? Man müsste Ansistring nach UnicodeString selbst umwandeln?
Eine ModeSwitch-Direktive wirkt nur auf die aktuelle Unit, nicht auf andere (egal ob vorkompiliert oder nicht).king558 hat geschrieben: Di 26. Sep 2023, 15:46 Ich habe hier ein Testprojekt, ModeSwitch habe ich es auf Unicode umgestellt. Jedoch ist die Funktion Format weiterehin Ansistring. Kann man nicht durch die ModeSwitch, alle Units auf Unicode umschalten?
Es gibt SysUtils.UnicodeFormat.king558 hat geschrieben: Di 26. Sep 2023, 18:52D.h. es gibt keine Unicode Version von Format Funktion? Man müsste Ansistring nach UnicodeString selbst umwandeln?af0815 hat geschrieben: Di 26. Sep 2023, 16:10 Format ist aus der RTL und die wird nicht durch eine einfache deklaration von ModeSwitch geändert. die RTL wird zusammen mit dem fpc fix erstellt und ist kein Bestandteil von Lazarus.
Danke für deine Tipps und Info.PascalDragon hat geschrieben: Do 28. Sep 2023, 22:42Eine ModeSwitch-Direktive wirkt nur auf die aktuelle Unit, nicht auf andere (egal ob vorkompiliert oder nicht).king558 hat geschrieben: Di 26. Sep 2023, 15:46 Ich habe hier ein Testprojekt, ModeSwitch habe ich es auf Unicode umgestellt. Jedoch ist die Funktion Format weiterehin Ansistring. Kann man nicht durch die ModeSwitch, alle Units auf Unicode umschalten?
Es gibt SysUtils.UnicodeFormat.king558 hat geschrieben: Di 26. Sep 2023, 18:52D.h. es gibt keine Unicode Version von Format Funktion? Man müsste Ansistring nach UnicodeString selbst umwandeln?af0815 hat geschrieben: Di 26. Sep 2023, 16:10 Format ist aus der RTL und die wird nicht durch eine einfache deklaration von ModeSwitch geändert. die RTL wird zusammen mit dem fpc fix erstellt und ist kein Bestandteil von Lazarus.
Wenn deine Ansi-CodePage auf UTF-8 eingestellt ist, ist die Konvertierung aber auch kein großer Verlust, so lange es nicht in zeitkritischen Code ist, was in den meisten Fällen eh nicht der Fall ist.
Für die vollständige Umstellung auf Unicode musst du auf das nächste Hauptrelease (3.4) warten, da es dann eine wirkliche Unicode RTL geben wird (wobei noch die Frage sein wird für welche Plattformen es welche Varianten geben wird).