LazUtils: New units for encoding data tables. Can be used by external code. Issue , patch from CudaText man.

git-svn-id: trunk@63642 -
This commit is contained in:
juha 2020-07-24 11:14:38 +00:00
parent 5fa1cdcfb0
commit 1cd6dc6dd4
9 changed files with 220 additions and 231 deletions

2
.gitattributes vendored
View File

@ -3407,6 +3407,8 @@ components/lazutils/amigalazfileutils.inc svneol=native#text/plain
components/lazutils/asiancodepagefunctions.inc svneol=native#text/pascal
components/lazutils/asiancodepages.inc svneol=native#text/pascal
components/lazutils/avglvltree.pas svneol=native#text/pascal
components/lazutils/codepagesasian.pas svneol=native#text/pascal
components/lazutils/codepagescommon.pas svneol=native#text/pascal
components/lazutils/commoncodepages.inc svneol=native#text/pascal
components/lazutils/compwriterpas.pas svneol=native#text/plain
components/lazutils/dynamicarray.pas svneol=native#text/pascal

View File

@ -1,4 +1,4 @@
{%MainUnit ../lconvencoding.pp}
{%MainUnit codepagesasian.pas}
{
*****************************************************************************
@ -18778,39 +18778,4 @@ $FF97,$FF98,$FF99,$FF9A,$FF9B,$FF9C,$FF9D,$FF9E,$FF9F,$FFE0,$FFE1,$FFE2,$FFE2,
$FFE2,$FFE3,$FFE4,$FFE4,$FFE5);
{$endif}
function SearchTable(CodePageArr: array of word; id: cardinal): word;
var
idMid: integer;
idLow, idHigh: integer;
begin
idLow := 0;
idHigh := High(CodePageArr);
while (idLow <= idHigh) do
begin
if idLow = idHigh then
begin
if CodePageArr[idLow] = id then
begin
Result := idLow;
end
else
begin
Result := 0;
end;
Exit;
end;
idMid := (idLow + idHigh) div 2;
if CodePageArr[idMid] = id then
begin
Result := idMid;
Exit;
end;
if CodePageArr[idMid] > id then
idHigh := idMid - 1;
if CodePageArr[idMid] < id then
idLow := idMid + 1;
end;
Result := 0;
end;

View File

@ -0,0 +1,19 @@
{
*****************************************************************************
This file is part of LazUtils.
See the file COPYING.modifiedLGPL.txt, included in this distribution,
for details about the license.
*****************************************************************************
}
unit CodepagesAsian;
{$mode objfpc}{$H+}
interface
{$I asiancodepages.inc}
implementation
end.

View File

@ -0,0 +1,19 @@
{
*****************************************************************************
This file is part of LazUtils.
See the file COPYING.modifiedLGPL.txt, included in this distribution,
for details about the license.
*****************************************************************************
}
unit CodepagesCommon;
{$mode objfpc}{$H+}
interface
{$I commoncodepages.inc}
implementation
end.

View File

@ -1,4 +1,4 @@
{%MainUnit ../lconvencoding.pp}
{%MainUnit codepagescommon.pas}
{
*****************************************************************************
@ -11,6 +11,9 @@
Common Unicode Conversion Tables
}
type
TCharToUTF8Table = array[char] of PChar;
const
ArrayISO_8859_1ToUTF8: TCharToUTF8Table = (
#0, // #0

View File

@ -1,10 +1,9 @@
{
File generated automatically by Lazarus Package Manager
Created with the Fppkgpackagemanager package installed
fpmake.pp for LazUtils 1.0
This file was generated on 22-05-20
This file was generated on 24.07.2020
}
{$ifndef ALLPACKAGES}
@ -46,188 +45,133 @@ begin
P.Options.Add('-vewnhibq');
P.UnitPath.Add('.');
T:=P.Targets.AddUnit('lazutils.pas');
D := T.Dependencies.AddInclude('LazLoggerImpl.inc');
D := T.Dependencies.AddInclude('LazLoggerIntf.inc');
D := T.Dependencies.AddInclude('asiancodepagefunctions.inc');
D := T.Dependencies.AddInclude('asiancodepages.inc');
D := T.Dependencies.AddUnit('AvgLvlTree');
D := T.Dependencies.AddUnit('DynamicArray');
D := T.Dependencies.AddUnit('DynHashArray');
D := T.Dependencies.AddUnit('DynQueue');
D := T.Dependencies.AddUnit('EasyLazFreeType');
D := T.Dependencies.AddUnit('ExtendedStrings');
D := T.Dependencies.AddUnit('FileUtil');
D := T.Dependencies.AddInclude('fileutil.inc');
D := T.Dependencies.AddUnit('FPCAdds');
D := T.Dependencies.AddUnit('Laz2_DOM');
D := T.Dependencies.AddInclude('laz2_names.inc');
D := T.Dependencies.AddUnit('Laz2_XMLCfg');
D := T.Dependencies.AddUnit('laz2_XMLRead');
D := T.Dependencies.AddUnit('laz2_xmlutils');
D := T.Dependencies.AddUnit('laz2_XMLWrite');
D := T.Dependencies.AddUnit('laz2_xpath');
D := T.Dependencies.AddUnit('Laz_DOM');
D := T.Dependencies.AddUnit('Laz_XMLCfg');
D := T.Dependencies.AddUnit('Laz_XMLRead');
D := T.Dependencies.AddUnit('Laz_XMLStreaming');
D := T.Dependencies.AddUnit('Laz_XMLWrite');
D := T.Dependencies.AddUnit('LazClasses');
D := T.Dependencies.AddUnit('lazCollections');
D := T.Dependencies.AddUnit('LazConfigStorage');
D := T.Dependencies.AddUnit('LazDbgLog');
D := T.Dependencies.AddUnit('lazfglhash');
D := T.Dependencies.AddUnit('LazFileCache');
D := T.Dependencies.AddUnit('LazFileUtils');
D := T.Dependencies.AddInclude('lazfileutils.inc');
D := T.Dependencies.AddUnit('LazFreeType');
D := T.Dependencies.AddUnit('LazFreeTypeFontCollection');
D := T.Dependencies.AddUnit('LazFreeTypeFPImageDrawer');
D := T.Dependencies.AddUnit('LazLinkedList');
D := T.Dependencies.AddUnit('LazListClasses');
D := T.Dependencies.AddUnit('LazLogger');
D := T.Dependencies.AddUnit('LazLoggerBase');
D := T.Dependencies.AddUnit('LazLoggerDummy');
D := T.Dependencies.AddUnit('LazLoggerProfiling');
D := T.Dependencies.AddUnit('LazMethodList');
D := T.Dependencies.AddUnit('LazUnicode');
D := T.Dependencies.AddUnit('LazUTF16');
D := T.Dependencies.AddUnit('LazUTF8');
D := T.Dependencies.AddUnit('LazUTF8Classes');
D := T.Dependencies.AddUnit('LazSysUtils');
D := T.Dependencies.AddUnit('LazUtilities');
D := T.Dependencies.AddInclude('lazutils_defines.inc');
D := T.Dependencies.AddUnit('LazUtilsStrConsts');
D := T.Dependencies.AddUnit('LConvEncoding');
D := T.Dependencies.AddUnit('lcsvutils');
D := T.Dependencies.AddUnit('LookupStringList');
D := T.Dependencies.AddUnit('Maps');
D := T.Dependencies.AddUnit('Masks');
D := T.Dependencies.AddUnit('PasWString');
D := T.Dependencies.AddUnit('StringHashList');
D := T.Dependencies.AddUnit('TextStrings');
D := T.Dependencies.AddUnit('Translations');
D := T.Dependencies.AddUnit('TTCache');
D := T.Dependencies.AddUnit('TTCalc');
D := T.Dependencies.AddInclude('ttcalc1.inc');
D := T.Dependencies.AddInclude('ttcalc2.inc');
D := T.Dependencies.AddInclude('ttcalc3.inc');
D := T.Dependencies.AddInclude('ttcalc4.inc');
D := T.Dependencies.AddUnit('TTCMap');
D := T.Dependencies.AddInclude('ttconfig.inc');
D := T.Dependencies.AddUnit('TTDebug');
D := T.Dependencies.AddUnit('TTError');
D := T.Dependencies.AddUnit('TTFile');
D := T.Dependencies.AddUnit('TTGLoad');
D := T.Dependencies.AddUnit('TTInterp');
D := T.Dependencies.AddUnit('TTLoad');
D := T.Dependencies.AddUnit('TTMemory');
D := T.Dependencies.AddUnit('TTObjs');
D := T.Dependencies.AddUnit('TTProfile');
D := T.Dependencies.AddUnit('TTRASTER');
D := T.Dependencies.AddInclude('ttraster_sweep.inc');
D := T.Dependencies.AddUnit('TTTables');
D := T.Dependencies.AddUnit('TTTypes');
D := T.Dependencies.AddInclude('unixfileutil.inc');
D := T.Dependencies.AddInclude('unixlazfileutils.inc');
D := T.Dependencies.AddInclude('unixlazutf8.inc');
D := T.Dependencies.AddUnit('UTF8Process');
D := T.Dependencies.AddInclude('winfileutil.inc');
D := T.Dependencies.AddInclude('winlazfileutils.inc');
D := T.Dependencies.AddInclude('winlazutf8.inc');
D := T.Dependencies.AddUnit('HTML2TextRender');
D := T.Dependencies.AddUnit('Laz_AVL_Tree');
D := T.Dependencies.AddUnit('CompWriterPas');
D := T.Dependencies.AddUnit('LazPasReadUtil');
D := T.Dependencies.AddUnit('IntegerList');
D := T.Dependencies.AddUnit('LazVersion');
D := T.Dependencies.AddUnit('UITypes');
D := T.Dependencies.AddUnit('GraphType');
D := T.Dependencies.AddUnit('LazTracer');
D := T.Dependencies.AddUnit('LazStringUtils');
D := T.Dependencies.AddUnit('LazUTF8SysUtils');
D := T.Dependencies.AddUnit('ObjectLists');
D := T.Dependencies.AddUnit('TTKern');
T := P.Targets.AddImplicitUnit('avglvltree.pas');
T := P.Targets.AddImplicitUnit('dynamicarray.pas');
T := P.Targets.AddImplicitUnit('dynhasharray.pp');
T := P.Targets.AddImplicitUnit('dynqueue.pas');
T := P.Targets.AddImplicitUnit('easylazfreetype.pas');
T := P.Targets.AddImplicitUnit('extendedstrings.pas');
T := P.Targets.AddImplicitUnit('fileutil.pas');
T := P.Targets.AddImplicitUnit('fpcadds.pas');
T := P.Targets.AddImplicitUnit('laz2_dom.pas');
T := P.Targets.AddImplicitUnit('laz2_xmlcfg.pas');
T := P.Targets.AddImplicitUnit('laz2_xmlread.pas');
T := P.Targets.AddImplicitUnit('laz2_xmlutils.pas');
T := P.Targets.AddImplicitUnit('laz2_xmlwrite.pas');
T := P.Targets.AddImplicitUnit('laz2_xpath.pas');
T := P.Targets.AddImplicitUnit('laz_dom.pas');
T := P.Targets.AddImplicitUnit('laz_xmlcfg.pas');
T := P.Targets.AddImplicitUnit('laz_xmlread.pas');
T := P.Targets.AddImplicitUnit('laz_xmlstreaming.pas');
T := P.Targets.AddImplicitUnit('laz_xmlwrite.pas');
T := P.Targets.AddImplicitUnit('lazclasses.pas');
T := P.Targets.AddImplicitUnit('lazcollections.pas');
T := P.Targets.AddImplicitUnit('lazconfigstorage.pas');
T := P.Targets.AddImplicitUnit('lazdbglog.pas');
T := P.Targets.AddImplicitUnit('lazfglhash.pas');
T := P.Targets.AddImplicitUnit('lazfilecache.pas');
T := P.Targets.AddImplicitUnit('lazfileutils.pas');
T := P.Targets.AddImplicitUnit('lazfreetype.pas');
T := P.Targets.AddImplicitUnit('lazfreetypefontcollection.pas');
T := P.Targets.AddImplicitUnit('lazfreetypefpimagedrawer.pas');
T := P.Targets.AddImplicitUnit('lazlinkedlist.pas');
T := P.Targets.AddImplicitUnit('lazlistclasses.pas');
T := P.Targets.AddImplicitUnit('lazlogger.pas');
T := P.Targets.AddImplicitUnit('lazloggerbase.pas');
T := P.Targets.AddImplicitUnit('lazloggerdummy.pas');
T := P.Targets.AddImplicitUnit('lazloggerprofiling.pas');
T := P.Targets.AddImplicitUnit('lazmethodlist.pas');
T := P.Targets.AddImplicitUnit('lazunicode.pas');
T := P.Targets.AddImplicitUnit('lazutf16.pas');
T := P.Targets.AddImplicitUnit('lazutf8.pas');
T := P.Targets.AddImplicitUnit('lazutf8classes.pas');
T := P.Targets.AddImplicitUnit('lazsysutils.pas');
T := P.Targets.AddImplicitUnit('lazutilities.pas');
T := P.Targets.AddImplicitUnit('lazutilsstrconsts.pas');
T := P.Targets.AddImplicitUnit('lconvencoding.pas');
T := P.Targets.AddImplicitUnit('lcsvutils.pas');
T := P.Targets.AddImplicitUnit('lookupstringlist.pas');
T := P.Targets.AddImplicitUnit('maps.pp');
T := P.Targets.AddImplicitUnit('masks.pas');
T := P.Targets.AddImplicitUnit('paswstring.pas');
T := P.Targets.AddImplicitUnit('stringhashlist.pas');
T := P.Targets.AddImplicitUnit('textstrings.pas');
T := P.Targets.AddImplicitUnit('translations.pas');
T := P.Targets.AddImplicitUnit('ttcache.pas');
T := P.Targets.AddImplicitUnit('ttcalc.pas');
T := P.Targets.AddImplicitUnit('ttcmap.pas');
T := P.Targets.AddImplicitUnit('ttdebug.pas');
T := P.Targets.AddImplicitUnit('tterror.pas');
T := P.Targets.AddImplicitUnit('ttfile.pas');
T := P.Targets.AddImplicitUnit('ttgload.pas');
T := P.Targets.AddImplicitUnit('ttinterp.pas');
T := P.Targets.AddImplicitUnit('ttload.pas');
T := P.Targets.AddImplicitUnit('ttmemory.pas');
T := P.Targets.AddImplicitUnit('ttobjs.pas');
T := P.Targets.AddImplicitUnit('ttprofile.pas');
T := P.Targets.AddImplicitUnit('ttraster.pas');
T := P.Targets.AddImplicitUnit('tttables.pas');
T := P.Targets.AddImplicitUnit('tttypes.pas');
T := P.Targets.AddImplicitUnit('utf8process.pp');
T := P.Targets.AddImplicitUnit('html2textrender.pas');
T := P.Targets.AddImplicitUnit('laz_avl_tree.pp');
T := P.Targets.AddImplicitUnit('compwriterpas.pas');
T := P.Targets.AddImplicitUnit('lazpasreadutil.pas');
T := P.Targets.AddImplicitUnit('integerlist.pas');
T := P.Targets.AddImplicitUnit('lazversion.pas');
T := P.Targets.AddImplicitUnit('uitypes.pas');
T := P.Targets.AddImplicitUnit('graphtype.pp');
T := P.Targets.AddImplicitUnit('laztracer.pas');
T := P.Targets.AddImplicitUnit('lazstringutils.pas');
T := P.Targets.AddImplicitUnit('lazutf8sysutils.pas');
T := P.Targets.AddImplicitUnit('objectlists.pas');
T := P.Targets.AddImplicitUnit('ttkern.pas');
t.Dependencies.AddUnit('avglvltree');
t.Dependencies.AddUnit('dynamicarray');
t.Dependencies.AddUnit('dynhasharray');
t.Dependencies.AddUnit('dynqueue');
t.Dependencies.AddUnit('extendedstrings');
t.Dependencies.AddUnit('fileutil');
t.Dependencies.AddUnit('fpcadds');
t.Dependencies.AddUnit('laz2_dom');
t.Dependencies.AddUnit('laz2_xmlcfg');
t.Dependencies.AddUnit('laz2_xmlread');
t.Dependencies.AddUnit('laz2_xmlutils');
t.Dependencies.AddUnit('laz2_xmlwrite');
t.Dependencies.AddUnit('laz2_xpath');
t.Dependencies.AddUnit('laz_dom');
t.Dependencies.AddUnit('laz_xmlcfg');
t.Dependencies.AddUnit('laz_xmlread');
t.Dependencies.AddUnit('laz_xmlstreaming');
t.Dependencies.AddUnit('laz_xmlwrite');
t.Dependencies.AddUnit('lazclasses');
t.Dependencies.AddUnit('lazcollections');
t.Dependencies.AddUnit('lazconfigstorage');
t.Dependencies.AddUnit('lazdbglog');
t.Dependencies.AddUnit('lazfglhash');
t.Dependencies.AddUnit('lazfilecache');
t.Dependencies.AddUnit('lazfileutils');
t.Dependencies.AddUnit('lazlinkedlist');
t.Dependencies.AddUnit('lazlistclasses');
t.Dependencies.AddUnit('lazlogger');
t.Dependencies.AddUnit('lazloggerbase');
t.Dependencies.AddUnit('lazloggerdummy');
t.Dependencies.AddUnit('lazloggerprofiling');
t.Dependencies.AddUnit('lazmethodlist');
t.Dependencies.AddUnit('lazunicode');
t.Dependencies.AddUnit('lazutf16');
t.Dependencies.AddUnit('lazutf8');
t.Dependencies.AddUnit('lazutf8classes');
t.Dependencies.AddUnit('lazsysutils');
t.Dependencies.AddUnit('lazutilities');
t.Dependencies.AddUnit('lazutilsstrconsts');
t.Dependencies.AddUnit('lconvencoding');
t.Dependencies.AddUnit('lcsvutils');
t.Dependencies.AddUnit('lookupstringlist');
t.Dependencies.AddUnit('maps');
t.Dependencies.AddUnit('masks');
t.Dependencies.AddUnit('paswstring');
t.Dependencies.AddUnit('stringhashlist');
t.Dependencies.AddUnit('textstrings');
t.Dependencies.AddUnit('translations');
t.Dependencies.AddUnit('utf8process');
t.Dependencies.AddUnit('html2textrender');
t.Dependencies.AddUnit('laz_avl_tree');
t.Dependencies.AddUnit('compwriterpas');
t.Dependencies.AddUnit('lazpasreadutil');
t.Dependencies.AddUnit('integerlist');
t.Dependencies.AddUnit('lazversion');
t.Dependencies.AddUnit('uitypes');
t.Dependencies.AddUnit('graphtype');
t.Dependencies.AddUnit('laztracer');
t.Dependencies.AddUnit('lazstringutils');
t.Dependencies.AddUnit('lazutf8sysutils');
t.Dependencies.AddUnit('objectlists');
t.Dependencies.AddUnit('codepagesasian');
t.Dependencies.AddUnit('codepagescommon');
T:=P.Targets.AddUnit('avglvltree.pas');
T:=P.Targets.AddUnit('dynamicarray.pas');
T:=P.Targets.AddUnit('dynhasharray.pp');
T:=P.Targets.AddUnit('dynqueue.pas');
T:=P.Targets.AddUnit('extendedstrings.pas');
T:=P.Targets.AddUnit('fileutil.pas');
T:=P.Targets.AddUnit('fpcadds.pas');
T:=P.Targets.AddUnit('laz2_dom.pas');
T:=P.Targets.AddUnit('laz2_xmlcfg.pas');
T:=P.Targets.AddUnit('laz2_xmlread.pas');
T:=P.Targets.AddUnit('laz2_xmlutils.pas');
T:=P.Targets.AddUnit('laz2_xmlwrite.pas');
T:=P.Targets.AddUnit('laz2_xpath.pas');
T:=P.Targets.AddUnit('laz_dom.pas');
T:=P.Targets.AddUnit('laz_xmlcfg.pas');
T:=P.Targets.AddUnit('laz_xmlread.pas');
T:=P.Targets.AddUnit('laz_xmlstreaming.pas');
T:=P.Targets.AddUnit('laz_xmlwrite.pas');
T:=P.Targets.AddUnit('lazclasses.pas');
T:=P.Targets.AddUnit('lazcollections.pas');
T:=P.Targets.AddUnit('lazconfigstorage.pas');
T:=P.Targets.AddUnit('lazdbglog.pas');
T:=P.Targets.AddUnit('lazfglhash.pas');
T:=P.Targets.AddUnit('lazfilecache.pas');
T:=P.Targets.AddUnit('lazfileutils.pas');
T:=P.Targets.AddUnit('lazlinkedlist.pas');
T:=P.Targets.AddUnit('lazlistclasses.pas');
T:=P.Targets.AddUnit('lazlogger.pas');
T:=P.Targets.AddUnit('lazloggerbase.pas');
T:=P.Targets.AddUnit('lazloggerdummy.pas');
T:=P.Targets.AddUnit('lazloggerprofiling.pas');
T:=P.Targets.AddUnit('lazmethodlist.pas');
T:=P.Targets.AddUnit('lazunicode.pas');
T:=P.Targets.AddUnit('lazutf16.pas');
T:=P.Targets.AddUnit('lazutf8.pas');
T:=P.Targets.AddUnit('lazutf8classes.pas');
T:=P.Targets.AddUnit('lazsysutils.pas');
T:=P.Targets.AddUnit('lazutilities.pas');
T:=P.Targets.AddUnit('lazutilsstrconsts.pas');
T:=P.Targets.AddUnit('lconvencoding.pas');
T:=P.Targets.AddUnit('lcsvutils.pas');
T:=P.Targets.AddUnit('lookupstringlist.pas');
T:=P.Targets.AddUnit('maps.pp');
T:=P.Targets.AddUnit('masks.pas');
T:=P.Targets.AddUnit('paswstring.pas');
T:=P.Targets.AddUnit('stringhashlist.pas');
T:=P.Targets.AddUnit('textstrings.pas');
T:=P.Targets.AddUnit('translations.pas');
T:=P.Targets.AddUnit('utf8process.pp');
T:=P.Targets.AddUnit('html2textrender.pas');
T:=P.Targets.AddUnit('laz_avl_tree.pp');
T:=P.Targets.AddUnit('compwriterpas.pas');
T:=P.Targets.AddUnit('lazpasreadutil.pas');
T:=P.Targets.AddUnit('integerlist.pas');
T:=P.Targets.AddUnit('lazversion.pas');
T:=P.Targets.AddUnit('uitypes.pas');
T:=P.Targets.AddUnit('graphtype.pp');
T:=P.Targets.AddUnit('laztracer.pas');
T:=P.Targets.AddUnit('lazstringutils.pas');
T:=P.Targets.AddUnit('lazutf8sysutils.pas');
T:=P.Targets.AddUnit('objectlists.pas');
T:=P.Targets.AddUnit('codepagesasian.pas');
T:=P.Targets.AddUnit('codepagescommon.pas');
// copy the compiled file, so the IDE knows how the package was compiled
P.Sources.AddSrc('LazUtils.compiled');

View File

@ -42,10 +42,6 @@
<Filename Value="asiancodepagefunctions.inc"/>
<Type Value="Include"/>
</Item>
<Item>
<Filename Value="asiancodepages.inc"/>
<Type Value="Include"/>
</Item>
<Item>
<Filename Value="avglvltree.pas"/>
<UnitName Value="AvgLvlTree"/>
@ -330,6 +326,14 @@
<Filename Value="objectlists.pas"/>
<UnitName Value="ObjectLists"/>
</Item>
<Item>
<Filename Value="codepagesasian.pas"/>
<UnitName Value="CodepagesAsian"/>
</Item>
<Item>
<Filename Value="codepagescommon.pas"/>
<UnitName Value="CodepagesCommon"/>
</Item>
</Files>
<LazDoc Paths="../../docs/xml/lazutils"/>
<i18n>

View File

@ -19,7 +19,7 @@ uses
PasWString, StringHashList, TextStrings, Translations, UTF8Process,
HTML2TextRender, Laz_AVL_Tree, CompWriterPas, LazPasReadUtil, IntegerList,
LazVersion, UITypes, GraphType, LazTracer, LazStringUtils, LazUTF8SysUtils,
ObjectLists, LazarusPackageIntf;
ObjectLists, CodepagesAsian, CodepagesCommon, LazarusPackageIntf;
implementation

View File

@ -28,7 +28,8 @@ interface
{$ifdef UseLCPConv}{$undef UseSystemCPConv}{$endif}
uses
SysUtils, Classes, dos, LazUTF8
SysUtils, Classes, dos, LazUTF8, CodepagesCommon
{$IFnDEF DisableAsianCodePages},CodepagesAsian{$ENDIF}
{$IFDEF EnableIconvEnc},iconvenc{$ENDIF};
type
@ -114,7 +115,7 @@ type
{$else}
TConvertUTF8ToEncodingFunc = function(const s: string): string;
{$endif}
TCharToUTF8Table = array[char] of PChar;
TCharToUTF8Table = CodepagesCommon.TCharToUTF8Table;
TUnicodeToCharID = function(Unicode: cardinal): integer;
var
ConvertAnsiToUTF8: TConvertEncodingFunction = nil;
@ -230,13 +231,45 @@ var
EncodingValid: boolean = false;
DefaultTextEncoding: string = EncodingAnsi;
function SearchTable(CodePageArr: array of word; id: cardinal): word;
var
idMid: integer;
idLow, idHigh: integer;
begin
idLow := 0;
idHigh := High(CodePageArr);
while (idLow <= idHigh) do
begin
if idLow = idHigh then
begin
if CodePageArr[idLow] = id then
begin
Result := idLow;
end
else
begin
Result := 0;
end;
Exit;
end;
idMid := (idLow + idHigh) div 2;
if CodePageArr[idMid] = id then
begin
Result := idMid;
Exit;
end;
if CodePageArr[idMid] > id then
idHigh := idMid - 1;
if CodePageArr[idMid] < id then
idLow := idMid + 1;
end;
Result := 0;
end;
{$IFnDEF DisableAsianCodePages}
{$include asiancodepages.inc}
{$include asiancodepagefunctions.inc}
{$ENDIF}
{$include commoncodepages.inc}
{$IFDEF Windows}
// AConsole - If false, it is the general system encoding,
// if true, it is the console encoding