2017-11-19 10 views
0

Lazarus Wiki StaatenErhalten der Standard-RTL-Codepage in Lazarus

Lazarus (eigentlich Paket seiner LazUtils) nutzt, dass die API und wechselt sie in UTF-8 (CP_UTF8). Es bedeutet auch, jetzt Windows-Benutzer UTF-8-Zeichenfolge in dem RTL verwendet

In unserer Cross-Plattform und Cross-Compiler Code, würden wir diese spezifische Situation erkennen möchten. GetACP() - Windows-API-Funktion gibt immer noch "1252" zurück, und dies gilt auch für die GetDefaultTextEncoding() - Funktion in Lazarus. Aber der Text (speziell der von der Funktion FindFirst() zurückgegebene Dateiname) enthält die Zeichenkette mit UTF8-kodiertem Dateinamen, und die Codepage der Zeichenkette (Variable) ist ebenfalls 65001.

Also, wie finden wir heraus, dass die RTL standardmäßig mit UTF8-Strings arbeitet? Ich habe mehrere Stunden damit verbracht, dies aus dem Lazarus-Quellcode herauszufinden, aber wahrscheinlich fehlt mir etwas ...

Ich verstehe, dass wir in vielen Szenarien die Codepage jeder einzelnen Zeichenfolge überprüfen müssen, aber ich bin interessiert an der Art und Weise, die Standard-RTL-Codepage zu finden, die in Lazarus UTF8 ist, aber Windows-definiert in FPC/Windows ohne Lazarus.

Antwort

0

Es stellt sich heraus, dass es keine einzelne Codepage-Variable oder Funktion gibt. Die Ergebnisse der Dateisystem-API-Aufrufe werden in die Codepage konvertiert, die in der Variable DefaultRTLFileSystemCodePage definiert ist. Das einzige Problem ist, dass diese Variable im Quellcode vorhanden ist und in der Systemeinheit sein soll, aber der Compiler sieht sie nicht.

+0

Sie sollten da sein. Aber FPC 3.0.x + –

+0

@MarcovandeVoort Ja, das dachte ich mir auch, aber aus welchen Gründen auch immer, der Compiler löst sie nicht. FPC 3.0.2 ist die einzige Version, die ich auf dem Entwicklungssystem habe (und wenn es nicht 3.0+ wäre, würde ich UTF8 nicht als Standard erhalten). –

+0

Hier funktioniert es mit Lager installiert FPC 3.0.2/Win32 mit nur einem "beginnen writeln (defaultsystemcodepage)"; Ende. " Programm –

Verwandte Themen