delphi - large - fontawesome io 3.2 1 icons
¿Qué es Codepage 0? (2)
Estoy usando la función Delphi
StringCodePage
Lo llamo en una cadena devuelta por una función COM (Acrobat Annotation getContents - vea mis otras publicaciones) y devuelve 0.
¿Qué es 0? Ansi?
La página de códigos 0 es CP_ACP, página actual de códigos ANSI de Windows.
Desde Windows.pas:
{$EXTERNALSYM CP_ACP}
CP_ACP = 0; { default to ANSI code page }
Desde MSDN :
CP_ACP
El sistema actual de la página de códigos ANSI de Windows. Este valor puede ser diferente en diferentes computadoras, incluso en la misma red. Se puede cambiar en la misma computadora, lo que hace que los datos almacenados se corrompan irrecuperablemente. Este valor solo está destinado a uso temporal y el almacenamiento permanente debe realizarse con UTF-16 o UTF-8 si es posible.
La única forma en que StringCodePage()
puede devolver 0 es si está pasando un AnsiString
en blanco, devolviendo así su afinidad de página de códigos en tiempo de compilación, o está pasando un AnsiString
no en blanco que tiene una página de códigos 0 asignada a su carga útil. Delphi usa WideString
para cadenas COM, y StringCodePage()
no devolverá 0 para ningún tipo de cadena excepto AnsiString
simple. En D2009, RTL no hizo un buen trabajo almacenando la página de códigos de ejecución del sistema operativo en cargas útiles de AnsiString
, por lo que comúnmente contenían la afinidad de página de códigos en tiempo de compilación 0. Eso es funcional en lo que respecta a las conversiones de cadenas, pero no muy explícito. Eso se solucionó en versiones posteriores de Delphi, por AnsiString
cargas útiles de AnsiString
ahora contienen la página de códigos del sistema operativo real que se determina en tiempo de ejecución.