Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2014.09.14;
Скачать: CL | DM;

Вниз

Разбираемся в кодировках   Найти похожие ветки 

 
DevilDevil ©   (2014-01-31 17:09) [120]

Вот что получилось :)
(кому надо)

{$if Defined(FPC) or (CompilerVersion < 24)}
function AtomicCmpExchange(var Target: Pointer; NewValue: Pointer; Comparand: Pointer): Pointer;
{$if (not Defined(CPUX86)) and (not Defined(CPUX64))}
begin
 {$if Defined(FPC) or Defined(MSWINDOWS)}
   Result := InterlockedCompareExchange(Target, NewValue, Comparand);
 {$else}
   {$message warn "not thread safety"}
   Result := Target;
   if (Result = Comparand) then Target := NewValue;
 {$ifend}
end;
{$ifend}
{$ifdef CPUX86}
asm
 xchg eax, ecx
 lock cmpxchg [ecx], edx
end;
{$endif}
{$ifdef CPUX64}
asm
 mov rax, r8
 lock cmpxchg [rcx], rdx
end;
{$endif}
{$ifend}


 
DevilDevil ©   (2014-02-02 04:01) [121]

Определён список кодировок, которые надо бы поддерживать
Надеюсь получится
В английском я не асс, поэтому если что - корректируйте. Но не увлекайтесь

type
 // unicode mode
 TUniConvUnicode = (// most used
                    ucuNone{SBCS/MBCS: AnsiChar, AnsiString},
                    ucuUCS2{WideChar, WideString, UnicodeString},
                    ucuUtf8{Utf8Char, Utf8String},
                    // another supported unicode
                    ucuUtf7,ucuUtf16,ucuUtf16be,ucuUtf32,ucuUtf32be,ucuUCS_2143,ucuUCS_3412);

{  ------------------- SUPPORTED NON-UNICODE ENCODINGS ----------------------  }
(*
    ANSI Code Pages(may be returned by Windows.GetACP):
        874 – Thai
        1250 – Central and East European Latin
        1251 – Cyrillic
        1252 – West European Latin
        1253 – Greek
        1254 – Turkish
        1255 – Hebrew
        1256 – Arabic
        1257 – Baltic
        1258 – Vietnamese

    Another (multy-byte) encodings, that may be specified as default in POSIX systems:
        932 - Japanese (shift_jis)
        936 - Simplified Chinese (gb2312)
        949 - Korean (ks_c_5601-1987)
        950 - Traditional Chinese (big5)

    Single-byte encodings, that also can be defined as "encoding" in XML/HTML:
        866 - Cyrillic (OEM)
        28592 - Central European (iso-8859-2)
        28593 - Latin 3 (iso-8859-3)
        28594 - Baltic (iso-8859-4)
        28595 - Cyrillic (iso-8859-5)
        28596 - Arabic (iso-8859-6)
        28597 - Greek (iso-8859-7)
        28598 - Hebrew (iso-8859-8)
        28599 - Turkish (iso-8859-9)
        28600 - Nordic (iso-8859-10)
        28603 - Estonian (iso-8859-13)
        28604 - Celtic (iso-8859-14)
        28605 - Latin-9 (iso-8859-15)
        28606 - South-Eastern European (iso-8859-16)
        20866 - Cyrillic (koi8-r)
        21866 - Ukrainian (koi8-u)
        10000 - Western European (Mac)
        10007 - Cyrillic (Mac)

    Multy-byte encodings, that also can be defined as "encoding" in XML/HTML:
        54936 - Simplified Chinese (gb18030)
        52936 - Simplified Chinese (hz-gb-2312)
        20932 - Japanese (euc-jp)
        50220 - Japanese with no halfwidth Katakana (iso-2022-jp)
        51949 - EUC Korean (euc-kr)
*)


 
DVM ©   (2014-02-02 10:20) [122]


> DevilDevil ©   (31.01.14 17:09) [120]

ты начиная с какой Delphi будешь поддерживать? Мне кажется вот такие:
{$if Defined(FPC) or Defined(MSWINDOWS)} появились не так уж и давно.

Defined() имеется в виду и OR / AND в дефайнах.


 
DevilDevil ©   (2014-02-02 12:28) [123]

> DVM ©   (02.02.14 10:20) [122]

С 6й версии
Вроде там нормально поддерживается Defined


 
Незнакомец   (2014-02-06 12:51) [124]

Исходя из моего опыта использования iconv - могу сказать, что это лажа
Для той же самой кодировки 1252 например iconv лагает на символах #129,#141,#143,#144,#157
Ожидал лучшего качества


 
Незнакомец   (2014-02-06 16:15) [125]

хотя... в вики вот что пишут:

According to the information on Microsoft"s and the Unicode Consortium"s websites, positions 81, 8D, 8F, 90, and 9D are
unused; however, the Windows API MultiByteToWideChar maps these to the corresponding C1 control codes.



Страницы: 1 2 3 4 вся ветка

Текущий архив: 2014.09.14;
Скачать: CL | DM;

Наверх




Память: 0.74 MB
Время: 0.014 c
15-1392150605
Юрий
2014-02-12 00:30
2014.09.14
С днем рождения ! 12 февраля 2014 среда


2-1381816621
aka
2013-10-15 09:57
2014.09.14
JSON русские символы


15-1391801247
Novicer
2014-02-07 23:27
2014.09.14
Работа программы в сетевом режиме


15-1392064202
Юрий
2014-02-11 00:30
2014.09.14
С днем рождения ! 11 февраля 2014 вторник


2-1381983486
i2e
2013-10-17 08:18
2014.09.14
Shift = [ssCtrl]; А если нажато несколько?