3666 lines
129 KiB
ObjectPascal
3666 lines
129 KiB
ObjectPascal
unit uROUnicodeConv;
|
|
|
|
// UnicodeConv 2.0.0
|
|
// Unicode Converter Library 2.0.0
|
|
// Delphi 3/4/5/6 and Kylix Implementation
|
|
//
|
|
// Copyright (c) 2002 by Dieter Köhler
|
|
// ("http://www.philo.de/xml/")
|
|
//
|
|
// Definitions:
|
|
// - "Package" refers to the collection of files distributed by
|
|
// the Copyright Holder, and derivatives of that collection of
|
|
// files created through textual modification.
|
|
// - "Standard Version" refers to such a Package if it has not
|
|
// been modified, or has been modified in accordance with the
|
|
// wishes of the Copyright Holder.
|
|
// - "Copyright Holder" is whoever is name in the copyright or
|
|
// copyrights for the package.
|
|
// - "You" is you, if you're thinking about copying or distributing
|
|
// this Package.
|
|
//
|
|
// Permission is hereby granted, free of charge, to any person
|
|
// obtaining a copy of this software and associated documentation
|
|
// files (the "Package"), to deal in the Package without restriction,
|
|
// including without limitation the rights to use, copy, modify,
|
|
// merge, publish, distribute, sublicense, and/or sell copies of the
|
|
// Package, and to permit persons to whom the Package is furnished
|
|
// to do so, subject to the following conditions:
|
|
//
|
|
// The above copyright notice and this permission notice shall be
|
|
// included in all copies or substantial portions of the Package.
|
|
//
|
|
// You may modify your copy of this Package in any way, provided
|
|
// that you insert a prominent notice in each changed file stating
|
|
// how and when you changed a file, and provided that you do at
|
|
// least one of the following:
|
|
//
|
|
// a) allow the Copyright Holder to include your modifications in
|
|
// the Standard Version of the Package.
|
|
//
|
|
// b) use the modified Package only within your corporation or
|
|
// organization.
|
|
//
|
|
// c) rename any non standard executables, units, and classes so
|
|
// the names do not conflict with standard executables, units, and
|
|
// classes, and provide a separate manual page that clearly documents
|
|
// how it differs from the standard version.
|
|
//
|
|
// d) make other distribution arrangements with the Copyright Holder.
|
|
//
|
|
// The name of the Copyright Holder may not be used to endorse or
|
|
// promote products derived from this Package without specific prior
|
|
// written permission.
|
|
//
|
|
// THE PACKAGE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
// PACKAGE OR THE USE OR OTHER DEALINGS IN THE PACKAGE.
|
|
|
|
interface
|
|
{$I RemObjects.inc}
|
|
uses
|
|
SysUtils, Classes;
|
|
|
|
type
|
|
TdomEncodingType = (etUnknown,etUTF8,etUTF16BE,etUTF16LE,etLatin1,
|
|
etLatin2,etLatin3,etLatin4,etCyrillic,etArabic,
|
|
etGreek,etHebrew,etLatin5,etLatin6,etLatin7,
|
|
etLatin8,etLatin9,etKOI8R,etcp10000_MacRoman,
|
|
etWindows1250,etWindows1251,etWindows1252);
|
|
|
|
EConversionStream = class(EStreamError);
|
|
|
|
TConversionStream = class(TStream)
|
|
private
|
|
FTarget: TStream;
|
|
FConvertCount: longint;
|
|
FConvertBufP: pointer;
|
|
FConvertBufSize: longint;
|
|
protected
|
|
function convertReadBuffer(const buffer; count: longint): longint; virtual;
|
|
function convertWriteBuffer(const buffer; count: longint): longint; virtual;
|
|
procedure setConvertBufSize(newSize: longint); virtual;
|
|
public
|
|
constructor Create(target: TStream);
|
|
destructor Destroy; override;
|
|
function Read(var buffer; count: longint): longint; override;
|
|
function Write(const buffer; count: longint): longint; override;
|
|
function Seek(offset: longint; origin: word): longint; override;
|
|
procedure FreeConvertBuffer;
|
|
property Target: TStream read FTarget;
|
|
property ConvertBufP: pointer read FConvertBufP;
|
|
property ConvertCount: longint read FConvertCount;
|
|
property ConvertBufSize: longint read FConvertBufSize;
|
|
end;
|
|
|
|
TUTF16BEToUTF8Stream = class(TConversionStream)
|
|
private
|
|
FExpandLF: boolean;
|
|
protected
|
|
function convertWriteBuffer(const buffer; count: longint): longint; override;
|
|
public
|
|
property expandLF: boolean read FExpandLF write FExpandLF;
|
|
end;
|
|
|
|
function StrToEncoding(const S: String): TdomEncodingType;
|
|
|
|
function SingleByteEncodingToUTF16Char(const P: Char; const Encoding: TdomEncodingType): WideChar;
|
|
|
|
function Iso8859_1ToUTF16Char(const P: Char): WideChar;
|
|
function Iso8859_2ToUTF16Char(const P: Char): WideChar;
|
|
function Iso8859_3ToUTF16Char(const P: Char): WideChar;
|
|
function Iso8859_4ToUTF16Char(const P: Char): WideChar;
|
|
function Iso8859_5ToUTF16Char(const P: Char): WideChar;
|
|
function Iso8859_6ToUTF16Char(const P: Char): WideChar;
|
|
function Iso8859_7ToUTF16Char(const P: Char): WideChar;
|
|
function Iso8859_8ToUTF16Char(const P: Char): WideChar;
|
|
function Iso8859_9ToUTF16Char(const P: Char): WideChar;
|
|
function Iso8859_10ToUTF16Char(const P: Char): WideChar;
|
|
function Iso8859_13ToUTF16Char(const P: Char): WideChar;
|
|
function Iso8859_14ToUTF16Char(const P: Char): WideChar;
|
|
function Iso8859_15ToUTF16Char(const P: Char): WideChar;
|
|
function KOI8_RToUTF16Char(const P: Char): WideChar;
|
|
function cp10000_MacRomanToUTF16Char(const P: Char): WideChar;
|
|
function cp1250ToUTF16Char(const P: Char): WideChar;
|
|
function cp1251ToUTF16Char(const P: Char): WideChar;
|
|
function cp1252ToUTF16Char(const P: Char): WideChar;
|
|
function Iso8859_1ToUTF16Str(const S: string): wideString;
|
|
function Iso8859_2ToUTF16Str(const S: string): wideString;
|
|
function Iso8859_3ToUTF16Str(const S: string): wideString;
|
|
function Iso8859_4ToUTF16Str(const S: string): wideString;
|
|
function Iso8859_5ToUTF16Str(const S: string): wideString;
|
|
function Iso8859_6ToUTF16Str(const S: string): wideString;
|
|
function Iso8859_7ToUTF16Str(const S: string): wideString;
|
|
function Iso8859_8ToUTF16Str(const S: string): wideString;
|
|
function Iso8859_9ToUTF16Str(const S: string): wideString;
|
|
function Iso8859_10ToUTF16Str(const S: string): wideString;
|
|
function Iso8859_13ToUTF16Str(const S: string): wideString;
|
|
function Iso8859_14ToUTF16Str(const S: string): wideString;
|
|
function Iso8859_15ToUTF16Str(const S: string): wideString;
|
|
function KOI8_RToUTF16Str(const S: string): wideString;
|
|
function cp10000_MacRomanToUTF16Str(const S: string): wideString;
|
|
function cp1250ToUTF16Str(const S: string): wideString;
|
|
function cp1251ToUTF16Str(const S: string): wideString;
|
|
function cp1252ToUTF16Str(const S: string): wideString;
|
|
function UTF8ToUTF16BEStr(const S: string): wideString;
|
|
function UTF16BEToUTF8Str(const ws: wideString;
|
|
const expandLF: boolean): string;
|
|
|
|
function UTF16To7BitASCIIChar(const P: wideChar): char;
|
|
function UTF16ToIso8859_1Char(const P: wideChar): char;
|
|
function UTF16To7BitASCIIStr(const S: wideString): string;
|
|
function UTF16ToIso8859_1Str(const S: wideString): string;
|
|
|
|
function UTF16HighSurrogate(const value: integer): WideChar;
|
|
function UTF16LowSurrogate(const value: integer): WideChar;
|
|
function UTF16SurrogateToInt(const highSurrogate, lowSurrogate: WideChar): integer;
|
|
function IsUTF16HighSurrogate(const S: WideChar): boolean;
|
|
function IsUTF16LowSurrogate(const S: WideChar): boolean;
|
|
|
|
type
|
|
ECSMIBException = Exception;
|
|
|
|
TCSMIBChangingEvent = procedure (Sender: TObject;
|
|
NewEnum: integer;
|
|
var AllowChange: Boolean) of object;
|
|
|
|
TCSMIB = class (TComponent)
|
|
protected
|
|
FEnum: integer;
|
|
FIgnoreInvalidEnum: boolean;
|
|
FOnChanging: TCSMIBChangingEvent;
|
|
FOnChange: TNotifyEvent;
|
|
procedure DoChange(Sender: TObject); virtual;
|
|
procedure DoChanging(Sender: TObject;
|
|
NewEnum: integer;
|
|
var AllowChange: Boolean); virtual;
|
|
function GetPrfMIMEName: string; virtual;
|
|
function GetAlias(i: integer): string; virtual;
|
|
function GetAliasCount: integer; virtual;
|
|
procedure SetEnum(const Value: integer); virtual;
|
|
procedure SetOnChange(const Value: TNotifyEvent); virtual;
|
|
procedure SetOnChanging(const Value: TCSMIBChangingEvent); virtual;
|
|
public
|
|
constructor Create(AOwner: TComponent); override;
|
|
function IsValidEnum(const Value: integer): boolean; virtual;
|
|
function SetToAlias(const S: string): boolean; virtual;
|
|
property Alias[i: integer]: string read GetAlias;
|
|
property AliasCount: integer read GetAliasCount;
|
|
property PreferredMIMEName: string read GetPrfMIMEName;
|
|
published
|
|
property OnChange: TNotifyEvent read FOnChange write SetOnChange;
|
|
property OnChanging: TCSMIBChangingEvent read FOnChanging write SetOnChanging;
|
|
property Enum: integer read FEnum write SetEnum;
|
|
property IgnoreInvalidEnum: boolean read FIgnoreInvalidEnum write FIgnoreInvalidEnum;
|
|
end;
|
|
|
|
|
|
{procedure Register;}
|
|
|
|
implementation
|
|
|
|
{procedure Register;
|
|
begin
|
|
RegisterComponents('XML', [TCSMIB]);
|
|
end;}
|
|
|
|
resourcestring
|
|
SOddSizeInvalid = 'Odd size not valid for WideString';
|
|
STargetNil = 'Must have a target stream';
|
|
|
|
|
|
// +++++++++++++++++++++++++ TConversionStream +++++++++++++++++++++++++
|
|
// - Provided by Karl Waclawek -
|
|
// This is an input/output stream for other streams.
|
|
// Purpose: transform data as they are written to or read from a target
|
|
// stream.
|
|
constructor TConversionStream.create(Target: TStream);
|
|
begin
|
|
if Target = nil then raise EConversionStream.create(STargetNil);
|
|
inherited create;
|
|
FTarget := Target;
|
|
end;
|
|
|
|
destructor TConversionStream.destroy;
|
|
begin
|
|
FreeMem(FConvertBufP);
|
|
inherited destroy;
|
|
end;
|
|
|
|
function TConversionStream.Seek(Offset: longint; Origin: Word): longint;
|
|
begin
|
|
Result := 0; // Seek makes no sense here
|
|
end;
|
|
|
|
function TConversionStream.ConvertReadBuffer(const Buffer; Count: longint): longint;
|
|
// Performs the actual conversion of the data in Buffer (read buffer);
|
|
// the result of the conversion must be written to ConvertBufB }
|
|
begin
|
|
Result := 0; //do nothing, override in descendants
|
|
end;
|
|
|
|
function TConversionStream.ConvertWriteBuffer(const Buffer; Count: longint): longint;
|
|
// Performs the actual conversion of the data in Buffer (write buffer);
|
|
// the result of the conversion must be written to ConvertBufB }
|
|
begin
|
|
Result := 0; //do nothing, override in descendants
|
|
end;
|
|
|
|
function TConversionStream.Read(var Buffer; Count: longint): longint;
|
|
// Reads Count bytes from target stream into Buffer;
|
|
// converts those bytes and stores the result in ConvertBufP;
|
|
// ConvertCount indicates the amount of bytes converted.
|
|
begin
|
|
Result := Target.Read(Buffer, Count);
|
|
FConvertCount := ConvertReadBuffer(Buffer, Result);
|
|
end;
|
|
|
|
function TConversionStream.Write(const Buffer; Count: longint): longint;
|
|
// Converts Count bytes from Buffer into ConvertBufP;
|
|
// ConvertCount indicates the amount of bytes converted;
|
|
// if not all converted bytes could be written to the target stream,
|
|
// then this returns the negative of the number of bytes actually written.
|
|
begin
|
|
Result := Count;
|
|
FConvertCount := ConvertWriteBuffer(Buffer, Result);
|
|
Count := Target.Write(FConvertBufP^, FConvertCount);
|
|
//if not all converted data could be written, return the negative
|
|
//count of the data actually written. This avoids having Result
|
|
//being the same as Count by coincidence
|
|
if Count <> FConvertCount then Result := -Count;
|
|
end;
|
|
|
|
procedure TConversionStream.FreeConvertBuffer;
|
|
begin
|
|
ReallocMem(FConvertBufP, 0);
|
|
FConvertBufSize := 0;
|
|
end;
|
|
|
|
procedure TConversionStream.SetConvertBufSize(NewSize: Integer);
|
|
begin
|
|
ReallocMem(FConvertBufP, NewSize);
|
|
FConvertBufSize := NewSize;
|
|
end;
|
|
|
|
|
|
// ++++++++++++++++++++++++++ TUTF16BEToUTF8Stream +++++++++++++++++++++++
|
|
function TUTF16BEToUTF8Stream.ConvertWriteBuffer(const Buffer;
|
|
Count: Integer): longint;
|
|
// Converts an UTF-16BE stream into an UTF-8 encoded stream
|
|
// (and expands LF to CR+LF if its protected expandLF property
|
|
// is 'true').
|
|
// - This function was provided by Ernst van der Pols -
|
|
// - expandLF parameter added by Dieter Köhler -
|
|
// - converted for stream processing by Karl Waclawek -
|
|
type
|
|
TWideCharBuf = array[0..(MaxInt shr 1) - 1] of WideChar;
|
|
var
|
|
InIndx, OutIndx: longint;
|
|
Wc: WideChar;
|
|
InBuf: TWideCharBuf absolute Buffer;
|
|
|
|
procedure IncBufSize(BufSize: longint);
|
|
var
|
|
Delta: longint;
|
|
begin
|
|
Inc(BufSize);
|
|
Delta := BufSize shr 2;
|
|
if Delta < 8 then Delta := 8;
|
|
BufSize := ((BufSize + Delta) shr 2) shl 2; //make it multiple of 4
|
|
setConvertBufSize(BufSize);
|
|
end;
|
|
|
|
procedure UCS4CodeToUTF8String(Code: longint);
|
|
const
|
|
MaxCode: array[0..5] of longint = ($7F,$7FF,$FFFF,$1FFFFF,$3FFFFFF,$7FFFFFFF);
|
|
FirstByte: array[0..5] of Byte = (0,$C0,$E0,$F0,$F8,$FC);
|
|
var
|
|
Mo, Indx, StartIndx: longint;
|
|
begin
|
|
Mo := 0; // get number of bytes
|
|
while ((Code > MaxCode[Mo]) and (Mo < 5)) do Inc(Mo);
|
|
StartIndx := OutIndx;
|
|
OutIndx := StartIndx + Mo;
|
|
if OutIndx >= ConvertBufSize then IncBufSize(OutIndx);
|
|
for Indx := OutIndx downto StartIndx + 1 do // fill bytes from rear end
|
|
begin
|
|
PChar(FConvertBufP)[Indx] := Char($80 or (Code and $3F));
|
|
Code := Code shr 6;
|
|
end;
|
|
PChar(FConvertBufP)[StartIndx] := Char(FirstByte[Mo] or Code); // fill first byte
|
|
end;
|
|
|
|
begin
|
|
Result := 0;
|
|
if Count = 0 then Exit;
|
|
if Odd(Count) then raise EConversionStream.create(SOddSizeInvalid);
|
|
Count := Count shr 1; //for initial size, assume all low ASCII chars
|
|
if Count > ConvertBufSize then setConvertBufSize(Count);
|
|
OutIndx := -1; // keep track of end position
|
|
InIndx := 0;
|
|
if InBuf[0] = #$feff then Inc(InIndx); // Test for BOM
|
|
|
|
while InIndx < Count do begin
|
|
Wc := InBuf[InIndx];
|
|
case Word(Wc) of
|
|
$0020..$007F,$0009,$000D: // plain ASCII
|
|
begin
|
|
Inc(OutIndx);
|
|
if OutIndx >= ConvertBufSize then IncBufSize(OutIndx);
|
|
PChar(FConvertBufP)[OutIndx]:= Char(Wc);
|
|
end;
|
|
$000A: // LF --> CR+LF
|
|
if ExpandLF then
|
|
begin
|
|
Inc(OutIndx, 2);
|
|
if OutIndx >= ConvertBufSize then IncBufSize(OutIndx);
|
|
PChar(FConvertBufP)[OutIndx - 1] := Chr(13);
|
|
PChar(FConvertBufP)[OutIndx] := Chr(10);
|
|
end
|
|
else
|
|
begin
|
|
Inc(OutIndx);
|
|
if OutIndx >= ConvertBufSize then IncBufSize(OutIndx);
|
|
PChar(FConvertBufP)[OutIndx] := Chr(10);
|
|
end;
|
|
$D800..$DBFF: // high surrogate
|
|
begin
|
|
Inc(InIndx);
|
|
if (InIndx < (Count - 1)) and (Word(InBuf[InIndx]) >= $DC00)
|
|
and (Word(InBuf[InIndx]) <= $DFFF) then
|
|
begin
|
|
Inc(OutIndx);
|
|
UCS4CodeToUTF8String(Utf16SurrogateToInt(Wc, InBuf[InIndx]));
|
|
end
|
|
else
|
|
raise EConvertError.CreateFmt(
|
|
'High surrogate %4.4X without low surrogate.',[Word(Wc)]);
|
|
end;
|
|
$DC00..$DFFF: // low surrogate
|
|
begin
|
|
Inc(InIndx);
|
|
if (InIndx < (Count - 1)) and (Word(InBuf[InIndx]) >= $D800)
|
|
and (Word(InBuf[InIndx]) <= $DBFF) then
|
|
begin
|
|
Inc(OutIndx);
|
|
UCS4CodeToUTF8String(Utf16SurrogateToInt(InBuf[InIndx], Wc));
|
|
end
|
|
else
|
|
raise EConvertError.CreateFmt(
|
|
'Low surrogate %4.4X without high surrogate.',[Word(Wc)]);
|
|
end;
|
|
$0080..$D7FF,$E000..$FFFD:
|
|
begin
|
|
Inc(OutIndx);
|
|
UCS4CodeToUTF8String(Word(Wc));
|
|
end;
|
|
end; {case ...}
|
|
Inc(InIndx);
|
|
end; { while ...}
|
|
Result := OutIndx + 1;
|
|
end;
|
|
|
|
|
|
// +++++++++++++++++++ encoding detection functions +++++++++++++++++++++
|
|
|
|
function StrToEncoding(const S: String): TdomEncodingType;
|
|
var
|
|
csmib: TCSMIB;
|
|
begin
|
|
if (CompareText(S,'cp10000_MacRoman') = 0)
|
|
then begin result:= etcp10000_MacRoman; exit; end;
|
|
|
|
csmib:= TCSMIB.Create(nil);
|
|
try
|
|
if csmib.SetToAlias(S) then begin
|
|
case csmib.Enum of
|
|
4: result:= etLatin1;
|
|
5: result:= etLatin2;
|
|
6: result:= etLatin3;
|
|
7: result:= etLatin4;
|
|
8: result:= etCyrillic;
|
|
9: result:= etArabic;
|
|
10: result:= etGreek;
|
|
11: result:= etHebrew;
|
|
12: result:= etLatin5;
|
|
13: result:= etLatin6;
|
|
106: result:= etUTF8;
|
|
109: result:= etLatin7;
|
|
110: result:= etLatin8;
|
|
111: result:= etLatin9;
|
|
1013,1015: result:= etUTF16BE;
|
|
1014: result:= etUTF16LE;
|
|
2084: result:= etKOI8R;
|
|
2250: result:= etWindows1250;
|
|
2251: result:= etWindows1251;
|
|
2252: result:= etWindows1252;
|
|
else
|
|
result:= etUnknown;
|
|
end;
|
|
end else result:= etUnknown;
|
|
finally
|
|
csmib.free;
|
|
end;
|
|
end;
|
|
|
|
|
|
// ++++++++++++++++++++++ conversion functions ++++++++++++++++++++++++
|
|
|
|
function SingleByteEncodingToUTF16Char(const P: Char; const Encoding: TdomEncodingType):WideChar;
|
|
begin
|
|
case Encoding of
|
|
etLatin1: result:= Iso8859_1ToUTF16Char(P);
|
|
etLatin2: result:= Iso8859_2ToUTF16Char(P);
|
|
etLatin3: result:= Iso8859_3ToUTF16Char(P);
|
|
etLatin4: result:= Iso8859_4ToUTF16Char(P);
|
|
etCyrillic: result:= Iso8859_5ToUTF16Char(P);
|
|
etArabic: result:= Iso8859_6ToUTF16Char(P);
|
|
etGreek: result:= Iso8859_7ToUTF16Char(P);
|
|
etHebrew: result:= Iso8859_8ToUTF16Char(P);
|
|
etLatin5: result:= Iso8859_9ToUTF16Char(P);
|
|
etLatin6: result:= Iso8859_10ToUTF16Char(P);
|
|
etLatin7: result:= Iso8859_13ToUTF16Char(P);
|
|
etLatin8: result:= Iso8859_14ToUTF16Char(P);
|
|
etLatin9: result:= Iso8859_15ToUTF16Char(P);
|
|
etKOI8R: result:= KOI8_RToUTF16Char(P);
|
|
etcp10000_MacRoman: result:= cp10000_MacRomanToUTF16Char(P);
|
|
etWindows1250: result:= cp1250ToUTF16Char(P);
|
|
etWindows1251: result:= cp1251ToUTF16Char(P);
|
|
etWindows1252: result:= cp1252ToUTF16Char(P);
|
|
else
|
|
raise EConvertError.Create('Invalid encoding type specified');
|
|
end;
|
|
end;
|
|
|
|
function Iso8859_1ToUTF16Char(const P: Char):WideChar;
|
|
begin
|
|
result:= WideChar(ord(P));
|
|
end;
|
|
|
|
function Iso8859_2ToUTF16Char(const P: Char):WideChar;
|
|
begin
|
|
case ord(p) of
|
|
$a1: result:= #$0104; // LATIN CAPITAL LETTER A WITH OGONEK
|
|
$a2: result:= #$02d8; // BREVE
|
|
$a3: result:= #$0141; // LATIN CAPITAL LETTER L WITH STROKE
|
|
$a5: result:= #$0132; // LATIN CAPITAL LETTER L WITH CARON
|
|
$a6: result:= #$015a; // LATIN CAPITAL LETTER S WITH ACUTE
|
|
$a9: result:= #$0160; // LATIN CAPITAL LETTER S WITH CARON
|
|
$aa: result:= #$015e; // LATIN CAPITAL LETTER S WITH CEDILLA
|
|
$ab: result:= #$0164; // LATIN CAPITAL LETTER T WITH CARON
|
|
$ac: result:= #$0179; // LATIN CAPITAL LETTER Z WITH ACUTE
|
|
$ae: result:= #$017d; // LATIN CAPITAL LETTER Z WITH CARON
|
|
$af: result:= #$017b; // LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
|
$b1: result:= #$0105; // LATIN SMALL LETTER A WITH OGONEK
|
|
$b2: result:= #$02db; // OGONEK
|
|
$b3: result:= #$0142; // LATIN SMALL LETTER L WITH STROKE
|
|
$b5: result:= #$013e; // LATIN SMALL LETTER L WITH CARON
|
|
$b6: result:= #$015b; // LATIN SMALL LETTER S WITH ACUTE
|
|
$b7: result:= #$02c7; // CARON
|
|
$b9: result:= #$0161; // LATIN SMALL LETTER S WITH CARON
|
|
$ba: result:= #$015f; // LATIN SMALL LETTER S WITH CEDILLA
|
|
$bb: result:= #$0165; // LATIN SMALL LETTER T WITH CARON
|
|
$bc: result:= #$017a; // LATIN SMALL LETTER Z WITH ACUTE
|
|
$bd: result:= #$02dd; // DOUBLE ACUTE ACCENT
|
|
$be: result:= #$017e; // LATIN SMALL LETTER Z WITH CARON
|
|
$bf: result:= #$017c; // LATIN SMALL LETTER Z WITH DOT ABOVE
|
|
$c0: result:= #$0154; // LATIN CAPITAL LETTER R WITH ACUTE
|
|
$c3: result:= #$0102; // LATIN CAPITAL LETTER A WITH BREVE
|
|
$c5: result:= #$0139; // LATIN CAPITAL LETTER L WITH ACUTE
|
|
$c6: result:= #$0106; // LATIN CAPITAL LETTER C WITH ACUTE
|
|
$c8: result:= #$010c; // LATIN CAPITAL LETTER C WITH CARON
|
|
$ca: result:= #$0118; // LATIN CAPITAL LETTER E WITH OGONEK
|
|
$cc: result:= #$011a; // LATIN CAPITAL LETTER E WITH CARON
|
|
$cf: result:= #$010e; // LATIN CAPITAL LETTER D WITH CARON
|
|
$d0: result:= #$0110; // LATIN CAPITAL LETTER D WITH STROKE
|
|
$d1: result:= #$0143; // LATIN CAPITAL LETTER N WITH ACUTE
|
|
$d2: result:= #$0147; // LATIN CAPITAL LETTER N WITH CARON
|
|
$d5: result:= #$0150; // LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
|
|
$d8: result:= #$0158; // LATIN CAPITAL LETTER R WITH CARON
|
|
$d9: result:= #$016e; // LATIN CAPITAL LETTER U WITH RING ABOVE
|
|
$db: result:= #$0170; // LATIN CAPITAL LETTER U WITH WITH DOUBLE ACUTE
|
|
$de: result:= #$0162; // LATIN CAPITAL LETTER T WITH CEDILLA
|
|
$e0: result:= #$0155; // LATIN SMALL LETTER R WITH ACUTE
|
|
$e3: result:= #$0103; // LATIN SMALL LETTER A WITH BREVE
|
|
$e5: result:= #$013a; // LATIN SMALL LETTER L WITH ACUTE
|
|
$e6: result:= #$0107; // LATIN SMALL LETTER C WITH ACUTE
|
|
$e8: result:= #$010d; // LATIN SMALL LETTER C WITH CARON
|
|
$ea: result:= #$0119; // LATIN SMALL LETTER E WITH OGONEK
|
|
$ec: result:= #$011b; // LATIN SMALL LETTER E WITH CARON
|
|
$ef: result:= #$010f; // LATIN SMALL LETTER D WITH CARON
|
|
$f0: result:= #$0111; // LATIN SMALL LETTER D WITH STROKE
|
|
$f1: result:= #$0144; // LATIN SMALL LETTER N WITH ACUTE
|
|
$f2: result:= #$0148; // LATIN SMALL LETTER N WITH CARON
|
|
$f5: result:= #$0151; // LATIN SMALL LETTER O WITH DOUBLE ACUTE
|
|
$f8: result:= #$0159; // LATIN SMALL LETTER R WITH CARON
|
|
$f9: result:= #$016f; // LATIN SMALL LETTER U WITH RING ABOVE
|
|
$fb: result:= #$0171; // LATIN SMALL LETTER U WITH WITH DOUBLE ACUTE
|
|
$fe: result:= #$0163; // LATIN SMALL LETTER T WITH CEDILLA
|
|
$ff: result:= #$02d9; // DOT ABOVE
|
|
else
|
|
result:= WideChar(ord(P));
|
|
end;
|
|
end;
|
|
|
|
function Iso8859_3ToUTF16Char(const P: Char):WideChar;
|
|
begin
|
|
case ord(P) of
|
|
$a1: result:= #$0126; // LATIN CAPITAL LETTER H WITH STROKE
|
|
$a2: result:= #$02d8; // BREVE
|
|
$a5: raise EConvertError.CreateFmt('Invalid ISO-8859-3 sequence "%s"',[P]);
|
|
$a6: result:= #$0124; // LATIN CAPITAL LETTER H WITH CIRCUMFLEX
|
|
$a9: result:= #$0130; // LATIN CAPITAL LETTER I WITH DOT ABOVE
|
|
$aa: result:= #$015e; // LATIN CAPITAL LETTER S WITH CEDILLA
|
|
$ab: result:= #$011e; // LATIN CAPITAL LETTER G WITH BREVE
|
|
$ac: result:= #$0134; // LATIN CAPITAL LETTER J WITH CIRCUMFLEX
|
|
$ae: raise EConvertError.CreateFmt('Invalid ISO-8859-3 sequence "%s"',[P]);
|
|
$af: result:= #$017b; // LATIN CAPITAL LETTER Z WITH DOT
|
|
$b1: result:= #$0127; // LATIN SMALL LETTER H WITH STROKE
|
|
$b6: result:= #$0125; // LATIN SMALL LETTER H WITH CIRCUMFLEX
|
|
$b9: result:= #$0131; // LATIN SMALL LETTER DOTLESS I
|
|
$ba: result:= #$015f; // LATIN SMALL LETTER S WITH CEDILLA
|
|
$bb: result:= #$011f; // LATIN SMALL LETTER G WITH BREVE
|
|
$bc: result:= #$0135; // LATIN SMALL LETTER J WITH CIRCUMFLEX
|
|
$be: raise EConvertError.CreateFmt('Invalid ISO-8859-3 sequence "%s"',[P]);
|
|
$bf: result:= #$017c; // LATIN SMALL LETTER Z WITH DOT
|
|
$c3: raise EConvertError.CreateFmt('Invalid ISO-8859-3 sequence "%s"',[P]);
|
|
$c5: result:= #$010a; // LATIN CAPITAL LETTER C WITH DOT ABOVE
|
|
$c6: result:= #$0108; // LATIN CAPITAL LETTER C WITH CIRCUMFLEX
|
|
$d0: raise EConvertError.CreateFmt('Invalid ISO-8859-3 sequence "%s"',[P]);
|
|
$d5: result:= #$0120; // LATIN CAPITAL LETTER G WITH DOT ABOVE
|
|
$d8: result:= #$011c; // LATIN CAPITAL LETTER G WITH CIRCUMFLEX
|
|
$dd: result:= #$016c; // LATIN CAPITAL LETTER U WITH BREVE
|
|
$de: result:= #$015c; // LATIN CAPITAL LETTER S WITH CIRCUMFLEX
|
|
$e3: raise EConvertError.CreateFmt('Invalid ISO-8859-3 sequence "%s"',[P]);
|
|
$e5: result:= #$010b; // LATIN SMALL LETTER C WITH DOT ABOVE
|
|
$e6: result:= #$0109; // LATIN SMALL LETTER C WITH CIRCUMFLEX
|
|
$f0: raise EConvertError.CreateFmt('Invalid ISO-8859-3 sequence "%s"',[P]);
|
|
$f5: result:= #$0121; // LATIN SMALL LETTER G WITH DOT ABOVE
|
|
$f8: result:= #$011d; // LATIN SMALL LETTER G WITH CIRCUMFLEX
|
|
$fd: result:= #$016d; // LATIN SMALL LETTER U WITH BREVE
|
|
$fe: result:= #$015d; // LATIN SMALL LETTER S WITH CIRCUMFLEX
|
|
$ff: result:= #$02d9; // DOT ABOVE
|
|
else
|
|
result:= WideChar(ord(P));
|
|
end;
|
|
end;
|
|
|
|
function Iso8859_4ToUTF16Char(const P: Char):WideChar;
|
|
begin
|
|
case ord(P) of
|
|
$a1: result:= #$0104; // LATIN CAPITAL LETTER A WITH OGONEK
|
|
$a2: result:= #$0138; // LATIN SMALL LETTER KRA
|
|
$a3: result:= #$0156; // LATIN CAPITAL LETTER R WITH CEDILLA
|
|
$a5: result:= #$0128; // LATIN CAPITAL LETTER I WITH TILDE
|
|
$a6: result:= #$013b; // LATIN CAPITAL LETTER L WITH CEDILLA
|
|
$a9: result:= #$0160; // LATIN CAPITAL LETTER S WITH CARON
|
|
$aa: result:= #$0112; // LATIN CAPITAL LETTER E WITH MACRON
|
|
$ab: result:= #$0122; // LATIN CAPITAL LETTER G WITH CEDILLA
|
|
$ac: result:= #$0166; // LATIN CAPITAL LETTER T WITH STROKE
|
|
$ae: result:= #$017d; // LATIN CAPITAL LETTER Z WITH CARON
|
|
$b1: result:= #$0105; // LATIN SMALL LETTER A WITH OGONEK
|
|
$b2: result:= #$02db; // OGONEK
|
|
$b3: result:= #$0157; // LATIN SMALL LETTER R WITH CEDILLA
|
|
$b5: result:= #$0129; // LATIN SMALL LETTER I WITH TILDE
|
|
$b6: result:= #$013c; // LATIN SMALL LETTER L WITH CEDILLA
|
|
$b7: result:= #$02c7; // CARON
|
|
$b9: result:= #$0161; // LATIN SMALL LETTER S WITH CARON
|
|
$ba: result:= #$0113; // LATIN SMALL LETTER E WITH MACRON
|
|
$bb: result:= #$0123; // LATIN SMALL LETTER G WITH CEDILLA
|
|
$bc: result:= #$0167; // LATIN SMALL LETTER T WITH STROKE
|
|
$bd: result:= #$014a; // LATIN CAPITAL LETTER ENG
|
|
$be: result:= #$017e; // LATIN SMALL LETTER Z WITH CARON
|
|
$bf: result:= #$014b; // LATIN SMALL LETTER ENG
|
|
$c0: result:= #$0100; // LATIN CAPITAL LETTER A WITH MACRON
|
|
$c7: result:= #$012e; // LATIN CAPITAL LETTER I WITH OGONEK
|
|
$c8: result:= #$010c; // LATIN CAPITAL LETTER C WITH CARON
|
|
$ca: result:= #$0118; // LATIN CAPITAL LETTER E WITH OGONEK
|
|
$cc: result:= #$0116; // LATIN CAPITAL LETTER E WITH DOT ABOVE
|
|
$cf: result:= #$012a; // LATIN CAPITAL LETTER I WITH MACRON
|
|
$d0: result:= #$0110; // LATIN CAPITAL LETTER D WITH STROKE
|
|
$d1: result:= #$0145; // LATIN CAPITAL LETTER N WITH CEDILLA
|
|
$d2: result:= #$014c; // LATIN CAPITAL LETTER O WITH MACRON
|
|
$d3: result:= #$0136; // LATIN CAPITAL LETTER K WITH CEDILLA
|
|
$d9: result:= #$0172; // LATIN CAPITAL LETTER U WITH OGONEK
|
|
$dd: result:= #$0168; // LATIN CAPITAL LETTER U WITH TILDE
|
|
$de: result:= #$016a; // LATIN CAPITAL LETTER U WITH MACRON
|
|
$e0: result:= #$0101; // LATIN SMALL LETTER A WITH MACRON
|
|
$e7: result:= #$012f; // LATIN SMALL LETTER I WITH OGONEK
|
|
$e8: result:= #$010d; // LATIN SMALL LETTER C WITH CARON
|
|
$ea: result:= #$0119; // LATIN SMALL LETTER E WITH OGONEK
|
|
$ec: result:= #$0117; // LATIN SMALL LETTER E WITH DOT ABOVE
|
|
$ef: result:= #$012b; // LATIN SMALL LETTER I WITH MACRON
|
|
$f0: result:= #$0111; // LATIN SMALL LETTER D WITH STROKE
|
|
$f1: result:= #$0146; // LATIN SMALL LETTER N WITH CEDILLA
|
|
$f2: result:= #$014d; // LATIN SMALL LETTER O WITH MACRON
|
|
$f3: result:= #$0137; // LATIN SMALL LETTER K WITH CEDILLA
|
|
$f9: result:= #$0173; // LATIN SMALL LETTER U WITH OGONEK
|
|
$fd: result:= #$0169; // LATIN SMALL LETTER U WITH TILDE
|
|
$fe: result:= #$016b; // LATIN SMALL LETTER U WITH MACRON
|
|
$ff: result:= #$02d9; // DOT ABOVE
|
|
else
|
|
result:= WideChar(ord(P));
|
|
end;
|
|
end;
|
|
|
|
function Iso8859_5ToUTF16Char(const P: Char):WideChar;
|
|
begin
|
|
case ord(P) of
|
|
$00..$a0,$ad:
|
|
result:= WideChar(ord(P));
|
|
$f0: result:= #$2116; // NUMERO SIGN
|
|
$fd: result:= #$00a7; // SECTION SIGN
|
|
else
|
|
result:= WideChar(ord(P)+$0360);
|
|
end;
|
|
end;
|
|
|
|
function Iso8859_6ToUTF16Char(const P: Char):WideChar;
|
|
begin
|
|
case ord(P) of
|
|
$00..$a0,$a4,$ad:
|
|
result:= WideChar(ord(P));
|
|
$ac,$bb,$bf,$c1..$da,$e0..$f2:
|
|
result:= WideChar(ord(P)+$0580);
|
|
else
|
|
raise EConvertError.CreateFmt('Invalid ISO-8859-6 sequence "%s"',[P]);
|
|
end;
|
|
end;
|
|
|
|
function Iso8859_7ToUTF16Char(const P: Char):WideChar;
|
|
begin
|
|
case ord(P) of
|
|
$00..$a0,$a6..$a9,$ab..$ad,$b0..$b3,$b7,$bb,$bd:
|
|
result:= WideChar(ord(P));
|
|
$a1: result:= #$2018; // LEFT SINGLE QUOTATION MARK
|
|
$a2: result:= #$2019; // RIGHT SINGLE QUOTATION MARK
|
|
$af: result:= #$2015; // HORIZONTAL BAR
|
|
$d2,$ff: raise EConvertError.CreateFmt('Invalid ISO-8859-7 sequence "%s"',[P]);
|
|
else
|
|
result:= WideChar(ord(P)+$02d0);
|
|
end;
|
|
end;
|
|
|
|
function Iso8859_8ToUTF16Char(const P: Char):WideChar;
|
|
begin
|
|
case ord(P) of
|
|
$00..$a0,$a2..$a9,$ab..$ae,$b0..$b9,$bb..$be:
|
|
result:= WideChar(ord(P));
|
|
$aa: result:= #$00d7; // MULTIPLICATION SIGN
|
|
$af: result:= #$203e; // OVERLINE
|
|
$ba: result:= #$00f7; // DIVISION SIGN
|
|
$df: result:= #$2017; // DOUBLE LOW LINE
|
|
$e0..$fa:
|
|
result:= WideChar(ord(P)+$04e0);
|
|
else
|
|
raise EConvertError.CreateFmt('Invalid ISO-8859-8 sequence "%s"',[P]);
|
|
end;
|
|
end;
|
|
|
|
function Iso8859_9ToUTF16Char(const P: Char):WideChar;
|
|
begin
|
|
case ord(P) of
|
|
$d0: result:= #$011e; // LATIN CAPITAL LETTER G WITH BREVE
|
|
$dd: result:= #$0130; // LATIN CAPITAL LETTER I WITH DOT ABOVE
|
|
$de: result:= #$015e; // LATIN CAPITAL LETTER S WITH CEDILLA
|
|
$f0: result:= #$011f; // LATIN SMALL LETTER G WITH BREVE
|
|
$fd: result:= #$0131; // LATIN SMALL LETTER I WITH DOT ABOVE
|
|
$fe: result:= #$015f; // LATIN SMALL LETTER S WITH CEDILLA
|
|
else
|
|
result:= WideChar(ord(P));
|
|
end;
|
|
end;
|
|
|
|
function Iso8859_10ToUTF16Char(const P: Char):WideChar;
|
|
begin
|
|
case ord(P) of
|
|
$a1: result:= #$0104; // LATIN CAPITAL LETTER A WITH OGONEK
|
|
$a2: result:= #$0112; // LATIN CAPITAL LETTER E WITH MACRON
|
|
$a3: result:= #$0122; // LATIN CAPITAL LETTER G WITH CEDILLA
|
|
$a4: result:= #$012a; // LATIN CAPITAL LETTER I WITH MACRON
|
|
$a5: result:= #$0128; // LATIN CAPITAL LETTER I WITH TILDE
|
|
$a6: result:= #$0136; // LATIN CAPITAL LETTER K WITH CEDILLA
|
|
$a8: result:= #$013b; // LATIN CAPITAL LETTER L WITH CEDILLA
|
|
$a9: result:= #$0110; // LATIN CAPITAL LETTER D WITH STROKE
|
|
$aa: result:= #$0160; // LATIN CAPITAL LETTER S WITH CARON
|
|
$ab: result:= #$0166; // LATIN CAPITAL LETTER T WITH STROKE
|
|
$ac: result:= #$017d; // LATIN CAPITAL LETTER Z WITH CARON
|
|
$ae: result:= #$016a; // LATIN CAPITAL LETTER U WITH MACRON
|
|
$af: result:= #$014a; // LATIN CAPITAL LETTER ENG
|
|
$b1: result:= #$0105; // LATIN SMALL LETTER A WITH OGONEK
|
|
$b2: result:= #$0113; // LATIN SMALL LETTER E WITH MACRON
|
|
$b3: result:= #$0123; // LATIN SMALL LETTER G WITH CEDILLA
|
|
$b4: result:= #$012b; // LATIN SMALL LETTER I WITH MACRON
|
|
$b5: result:= #$0129; // LATIN SMALL LETTER I WITH TILDE
|
|
$b6: result:= #$0137; // LATIN SMALL LETTER K WITH CEDILLA
|
|
$b8: result:= #$013c; // LATIN SMALL LETTER L WITH CEDILLA
|
|
$b9: result:= #$0111; // LATIN SMALL LETTER D WITH STROKE
|
|
$ba: result:= #$0161; // LATIN SMALL LETTER S WITH CARON
|
|
$bb: result:= #$0167; // LATIN SMALL LETTER T WITH STROKE
|
|
$bc: result:= #$017e; // LATIN SMALL LETTER Z WITH CARON
|
|
$bd: result:= #$2015; // HORIZONTAL BAR
|
|
$be: result:= #$016b; // LATIN SMALL LETTER U WITH MACRON
|
|
$bf: result:= #$014b; // LATIN SMALL LETTER ENG
|
|
$c0: result:= #$0100; // LATIN CAPITAL LETTER A WITH MACRON
|
|
$c7: result:= #$012e; // LATIN CAPITAL LETTER I WITH OGONEK
|
|
$c8: result:= #$010c; // LATIN CAPITAL LETTER C WITH CARON
|
|
$ca: result:= #$0118; // LATIN CAPITAL LETTER E WITH OGONEK
|
|
$cc: result:= #$0116; // LATIN CAPITAL LETTER E WITH DOT ABOVE
|
|
$d1: result:= #$0145; // LATIN CAPITAL LETTER N WITH CEDILLA
|
|
$d2: result:= #$014c; // LATIN CAPITAL LETTER O WITH MACRON
|
|
$d7: result:= #$0168; // LATIN CAPITAL LETTER U WITH TILDE
|
|
$d9: result:= #$0172; // LATIN CAPITAL LETTER U WITH OGONEK
|
|
$e0: result:= #$0101; // LATIN SMALL LETTER A WITH MACRON
|
|
$e7: result:= #$012f; // LATIN SMALL LETTER I WITH OGONEK
|
|
$e8: result:= #$010d; // LATIN SMALL LETTER C WITH CARON
|
|
$ea: result:= #$0119; // LATIN SMALL LETTER E WITH OGONEK
|
|
$ec: result:= #$0117; // LATIN SMALL LETTER E WITH DOT ABOVE
|
|
$f1: result:= #$0146; // LATIN SMALL LETTER N WITH CEDILLA
|
|
$f2: result:= #$014d; // LATIN SMALL LETTER O WITH MACRON
|
|
$f7: result:= #$0169; // LATIN SMALL LETTER U WITH TILDE
|
|
$f9: result:= #$0173; // LATIN SMALL LETTER U WITH OGONEK
|
|
$ff: result:= #$0138; // LATIN SMALL LETTER KRA
|
|
else
|
|
result:= WideChar(ord(P));
|
|
end;
|
|
end;
|
|
|
|
function Iso8859_13ToUTF16Char(const P: Char):WideChar;
|
|
begin
|
|
case ord(P) of
|
|
$a1: result:= #$201d; // RIGHT DOUBLE QUOTATION MARK
|
|
$a5: result:= #$201e; // DOUBLE LOW-9 QUOTATION MARK
|
|
$a8: result:= #$00d8; // LATIN CAPITAL LETTER O WITH STROKE
|
|
$aa: result:= #$0156; // LATIN CAPITAL LETTER R WITH CEDILLA
|
|
$af: result:= #$00c6; // LATIN CAPITAL LETTER AE
|
|
$b4: result:= #$201c; // LEFT DOUBLE QUOTATION MARK
|
|
$b8: result:= #$00f8; // LATIN SMALL LETTER O WITH STROKE
|
|
$ba: result:= #$0157; // LATIN SMALL LETTER R WITH CEDILLA
|
|
$bf: result:= #$00e6; // LATIN SMALL LETTER AE
|
|
$c0: result:= #$0104; // LATIN CAPITAL LETTER A WITH OGONEK
|
|
$c1: result:= #$012e; // LATIN CAPITAL LETTER I WITH OGONEK
|
|
$c2: result:= #$0100; // LATIN CAPITAL LETTER A WITH MACRON
|
|
$c3: result:= #$0106; // LATIN CAPITAL LETTER C WITH ACUTE
|
|
$c6: result:= #$0118; // LATIN CAPITAL LETTER E WITH OGONEK
|
|
$c7: result:= #$0112; // LATIN CAPITAL LETTER E WITH MACRON
|
|
$c8: result:= #$010c; // LATIN CAPITAL LETTER C WITH CARON
|
|
$ca: result:= #$0179; // LATIN CAPITAL LETTER Z WITH ACUTE
|
|
$cb: result:= #$0116; // LATIN CAPITAL LETTER E WITH DOT ABOVE
|
|
$cc: result:= #$0122; // LATIN CAPITAL LETTER G WITH CEDILLA
|
|
$cd: result:= #$0136; // LATIN CAPITAL LETTER K WITH CEDILLA
|
|
$ce: result:= #$012a; // LATIN CAPITAL LETTER I WITH MACRON
|
|
$cf: result:= #$013b; // LATIN CAPITAL LETTER L WITH CEDILLA
|
|
$d0: result:= #$0160; // LATIN CAPITAL LETTER S WITH CARON
|
|
$d1: result:= #$0143; // LATIN CAPITAL LETTER N WITH ACUTE
|
|
$d2: result:= #$0145; // LATIN CAPITAL LETTER N WITH CEDILLA
|
|
$d4: result:= #$014c; // LATIN CAPITAL LETTER O WITH MACRON
|
|
$d8: result:= #$0172; // LATIN CAPITAL LETTER U WITH OGONEK
|
|
$d9: result:= #$0141; // LATIN CAPITAL LETTER L WITH STROKE
|
|
$da: result:= #$015a; // LATIN CAPITAL LETTER S WITH ACUTE
|
|
$db: result:= #$016a; // LATIN CAPITAL LETTER U WITH MACRON
|
|
$dd: result:= #$017b; // LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
|
$de: result:= #$017d; // LATIN CAPITAL LETTER Z WITH CARON
|
|
$e0: result:= #$0105; // LATIN SMALL LETTER A WITH OGONEK
|
|
$e1: result:= #$012f; // LATIN SMALL LETTER I WITH OGONEK
|
|
$e2: result:= #$0101; // LATIN SMALL LETTER A WITH MACRON
|
|
$e3: result:= #$0107; // LATIN SMALL LETTER C WITH ACUTE
|
|
$e6: result:= #$0119; // LATIN SMALL LETTER E WITH OGONEK
|
|
$e7: result:= #$0113; // LATIN SMALL LETTER E WITH MACRON
|
|
$e8: result:= #$010d; // LATIN SMALL LETTER C WITH CARON
|
|
$ea: result:= #$017a; // LATIN SMALL LETTER Z WITH ACUTE
|
|
$eb: result:= #$0117; // LATIN SMALL LETTER E WITH DOT ABOVE
|
|
$ec: result:= #$0123; // LATIN SMALL LETTER G WITH CEDILLA
|
|
$ed: result:= #$0137; // LATIN SMALL LETTER K WITH CEDILLA
|
|
$ee: result:= #$012b; // LATIN SMALL LETTER I WITH MACRON
|
|
$ef: result:= #$013c; // LATIN SMALL LETTER L WITH CEDILLA
|
|
$f0: result:= #$0161; // LATIN SMALL LETTER S WITH CARON
|
|
$f1: result:= #$0144; // LATIN SMALL LETTER N WITH ACUTE
|
|
$f2: result:= #$0146; // LATIN SMALL LETTER N WITH CEDILLA
|
|
$f4: result:= #$014d; // LATIN SMALL LETTER O WITH MACRON
|
|
$f8: result:= #$0173; // LATIN SMALL LETTER U WITH OGONEK
|
|
$f9: result:= #$0142; // LATIN SMALL LETTER L WITH STROKE
|
|
$fa: result:= #$015b; // LATIN SMALL LETTER S WITH ACUTE
|
|
$fb: result:= #$016b; // LATIN SMALL LETTER U WITH MACRON
|
|
$fd: result:= #$017c; // LATIN SMALL LETTER Z WITH DOT ABOVE
|
|
$fe: result:= #$017e; // LATIN SMALL LETTER Z WITH CARON
|
|
$ff: result:= #$2019; // RIGHT SINGLE QUOTATION MARK
|
|
else
|
|
result:= WideChar(ord(P));
|
|
end;
|
|
end;
|
|
|
|
function Iso8859_14ToUTF16Char(const P: Char):WideChar;
|
|
begin
|
|
case ord(P) of
|
|
$a1: result:= #$1e02; // LATIN CAPITAL LETTER B WITH DOT ABOVE
|
|
$a2: result:= #$1e03; // LATIN SMALL LETTER B WITH DOT ABOVE
|
|
$a4: result:= #$010a; // LATIN CAPITAL LETTER C WITH DOT ABOVE
|
|
$a5: result:= #$010b; // LATIN SMALL LETTER C WITH DOT ABOVE
|
|
$a6: result:= #$1e0a; // LATIN CAPITAL LETTER D WITH DOT ABOVE
|
|
$a8: result:= #$1e80; // LATIN CAPITAL LETTER W WITH GRAVE
|
|
$aa: result:= #$1e82; // LATIN CAPITAL LETTER W WITH ACUTE
|
|
$ab: result:= #$1e0b; // LATIN SMALL LETTER D WITH DOT ABOVE
|
|
$ac: result:= #$1ef2; // LATIN CAPITAL LETTER Y WITH GRAVE
|
|
$af: result:= #$0178; // LATIN CAPITAL LETTER Y WITH DIAERESIS
|
|
$b0: result:= #$1e1e; // LATIN CAPITAL LETTER F WITH DOT ABOVE
|
|
$b1: result:= #$1e1f; // LATIN SMALL LETTER F WITH DOT ABOVE
|
|
$b2: result:= #$0120; // LATIN CAPITAL LETTER G WITH DOT ABOVE
|
|
$b3: result:= #$0121; // LATIN SMALL LETTER G WITH DOT ABOVE
|
|
$b4: result:= #$1e40; // LATIN CAPITAL LETTER M WITH DOT ABOVE
|
|
$b5: result:= #$1e41; // LATIN SMALL LETTER M WITH DOT ABOVE
|
|
$b7: result:= #$1e56; // LATIN CAPITAL LETTER P WITH DOT ABOVE
|
|
$b8: result:= #$1e81; // LATIN SMALL LETTER W WITH GRAVE
|
|
$b9: result:= #$1e57; // LATIN SMALL LETTER P WITH DOT ABOVE
|
|
$ba: result:= #$1e83; // LATIN SMALL LETTER W WITH ACUTE
|
|
$bb: result:= #$1e60; // LATIN CAPITAL LETTER S WITH DOT ABOVE
|
|
$bc: result:= #$1ef3; // LATIN SMALL LETTER Y WITH GRAVE
|
|
$bd: result:= #$1e84; // LATIN CAPITAL LETTER W WITH DIAERESIS
|
|
$be: result:= #$1e85; // LATIN SMALL LETTER W WITH DIAERESIS
|
|
$bf: result:= #$1e61; // LATIN SMALL LETTER S WITH DOT ABOVE
|
|
$d0: result:= #$0174; // LATIN CAPITAL LETTER W WITH CIRCUMFLEX
|
|
$d7: result:= #$1e6a; // LATIN CAPITAL LETTER T WITH DOT ABOVE
|
|
$de: result:= #$0176; // LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
|
|
$f0: result:= #$0175; // LATIN SMALL LETTER W WITH CIRCUMFLEX
|
|
$f7: result:= #$1e6b; // LATIN SMALL LETTER T WITH DOT ABOVE
|
|
$fe: result:= #$0177; // LATIN SMALL LETTER Y WITH CIRCUMFLEX
|
|
else
|
|
result:= WideChar(ord(P));
|
|
end;
|
|
end;
|
|
|
|
function Iso8859_15ToUTF16Char(const P: Char):WideChar;
|
|
begin
|
|
case ord(P) of
|
|
$a4: result:= #$20ac; // EURO SIGN
|
|
$a6: result:= #$00a6; // LATIN CAPITAL LETTER S WITH CARON
|
|
$a8: result:= #$0161; // LATIN SMALL LETTER S WITH CARON
|
|
$b4: result:= #$017d; // LATIN CAPITAL LETTER Z WITH CARON
|
|
$b8: result:= #$017e; // LATIN SMALL LETTER Z WITH CARON
|
|
$bc: result:= #$0152; // LATIN CAPITAL LIGATURE OE
|
|
$bd: result:= #$0153; // LATIN SMALL LIGATURE OE
|
|
$be: result:= #$0178; // LATIN CAPITAL LETTER Y WITH DIAERESIS
|
|
else
|
|
result:= WideChar(ord(P));
|
|
end;
|
|
end;
|
|
|
|
function KOI8_RToUTF16Char(const P: Char):WideChar;
|
|
begin
|
|
case ord(P) of
|
|
$80: result:= #$2500; // BOX DRAWINGS LIGHT HORIZONTAL
|
|
$81: result:= #$2502; // BOX DRAWINGS LIGHT VERTICAL
|
|
$82: result:= #$250c; // BOX DRAWINGS LIGHT DOWN AND RIGHT
|
|
$83: result:= #$2510; // BOX DRAWINGS LIGHT DOWN AND LEFT
|
|
$84: result:= #$2514; // BOX DRAWINGS LIGHT UP AND RIGHT
|
|
$85: result:= #$2518; // BOX DRAWINGS LIGHT UP AND LEFT
|
|
$86: result:= #$251c; // BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
|
$87: result:= #$2524; // BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
|
$88: result:= #$252c; // BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
|
$89: result:= #$2534; // BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
|
$8a: result:= #$253c; // BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
|
$8b: result:= #$2580; // UPPER HALF BLOCK
|
|
$8c: result:= #$2584; // LOWER HALF BLOCK
|
|
$8d: result:= #$2588; // FULL BLOCK
|
|
$8e: result:= #$258c; // LEFT HALF BLOCK
|
|
$8f: result:= #$2590; // RIGHT HALF BLOCK
|
|
$90: result:= #$2591; // LIGHT SHADE
|
|
$91: result:= #$2592; // MEDIUM SHADE
|
|
$92: result:= #$2593; // DARK SHADE
|
|
$93: result:= #$2320; // TOP HALF INTEGRAL
|
|
$94: result:= #$25a0; // BLACK SQUARE
|
|
$95: result:= #$2219; // BULLET OPERATOR
|
|
$96: result:= #$221a; // SQUARE ROOT
|
|
$97: result:= #$2248; // ALMOST EQUAL TO
|
|
$98: result:= #$2264; // LESS-THAN OR EQUAL TO
|
|
$99: result:= #$2265; // GREATER-THAN OR EQUAL TO
|
|
$9a: result:= #$00a0; // NO-BREAK SPACE
|
|
$9b: result:= #$2321; // BOTTOM HALF INTEGRAL
|
|
$9c: result:= #$00b0; // DEGREE SIGN
|
|
$9d: result:= #$00b2; // SUPERSCRIPT TWO
|
|
$9e: result:= #$00b7; // MIDDLE DOT
|
|
$9f: result:= #$00f7; // DIVISION SIGN
|
|
$a0: result:= #$2550; // BOX DRAWINGS DOUBLE HORIZONTAL
|
|
$a1: result:= #$2551; // BOX DRAWINGS DOUBLE VERTICAL
|
|
$a2: result:= #$2552; // BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
|
$a3: result:= #$0451; // CYRILLIC SMALL LETTER IO
|
|
$a4: result:= #$2553; // BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
|
$a5: result:= #$2554; // BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
|
$a6: result:= #$2555; // BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
|
$a7: result:= #$2556; // BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
|
$a8: result:= #$2557; // BOX DRAWINGS DOUBLE DOWN AND LEFT
|
|
$a9: result:= #$2558; // BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
|
$aa: result:= #$2559; // BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
|
$ab: result:= #$255a; // BOX DRAWINGS DOUBLE UP AND RIGHT
|
|
$ac: result:= #$255b; // BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
|
$ad: result:= #$255c; // BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
|
$ae: result:= #$255d; // BOX DRAWINGS DOUBLE UP AND LEFT
|
|
$af: result:= #$255e; // BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
|
$b0: result:= #$255f; // BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
|
$b1: result:= #$2560; // BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
|
$b2: result:= #$2561; // BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
|
$b3: result:= #$0401; // CYRILLIC CAPITAL LETTER IO
|
|
$b4: result:= #$2562; // BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
|
$b5: result:= #$2563; // BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
|
$b6: result:= #$2564; // BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
|
$b7: result:= #$2565; // BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
|
$b8: result:= #$2566; // BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
|
$b9: result:= #$2567; // BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
|
$ba: result:= #$2568; // BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
|
$bb: result:= #$2569; // BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
|
$bc: result:= #$256a; // BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
|
$bd: result:= #$256b; // BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
|
$be: result:= #$256c; // BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
|
$bf: result:= #$00a9; // COPYRIGHT SIGN
|
|
$c0: result:= #$044e; // CYRILLIC SMALL LETTER YU
|
|
$c1: result:= #$0430; // CYRILLIC SMALL LETTER A
|
|
$c2: result:= #$0431; // CYRILLIC SMALL LETTER BE
|
|
$c3: result:= #$0446; // CYRILLIC SMALL LETTER TSE
|
|
$c4: result:= #$0434; // CYRILLIC SMALL LETTER DE
|
|
$c5: result:= #$0435; // CYRILLIC SMALL LETTER IE
|
|
$c6: result:= #$0444; // CYRILLIC SMALL LETTER EF
|
|
$c7: result:= #$0433; // CYRILLIC SMALL LETTER GHE
|
|
$c8: result:= #$0445; // CYRILLIC SMALL LETTER HA
|
|
$c9: result:= #$0438; // CYRILLIC SMALL LETTER I
|
|
$ca: result:= #$0439; // CYRILLIC SMALL LETTER SHORT I
|
|
$cb: result:= #$043a; // CYRILLIC SMALL LETTER KA
|
|
$cc: result:= #$043b; // CYRILLIC SMALL LETTER EL
|
|
$cd: result:= #$043c; // CYRILLIC SMALL LETTER EM
|
|
$ce: result:= #$043d; // CYRILLIC SMALL LETTER EN
|
|
$cf: result:= #$043e; // CYRILLIC SMALL LETTER O
|
|
$d0: result:= #$043f; // CYRILLIC SMALL LETTER PE
|
|
$d1: result:= #$044f; // CYRILLIC SMALL LETTER YA
|
|
$d2: result:= #$0440; // CYRILLIC SMALL LETTER ER
|
|
$d3: result:= #$0441; // CYRILLIC SMALL LETTER ES
|
|
$d4: result:= #$0442; // CYRILLIC SMALL LETTER TE
|
|
$d5: result:= #$0443; // CYRILLIC SMALL LETTER U
|
|
$d6: result:= #$0436; // CYRILLIC SMALL LETTER ZHE
|
|
$d7: result:= #$0432; // CYRILLIC SMALL LETTER VE
|
|
$d8: result:= #$044c; // CYRILLIC SMALL LETTER SOFT SIGN
|
|
$d9: result:= #$044b; // CYRILLIC SMALL LETTER YERU
|
|
$da: result:= #$0437; // CYRILLIC SMALL LETTER ZE
|
|
$db: result:= #$0448; // CYRILLIC SMALL LETTER SHA
|
|
$dc: result:= #$044d; // CYRILLIC SMALL LETTER E
|
|
$dd: result:= #$0449; // CYRILLIC SMALL LETTER SHCHA
|
|
$de: result:= #$0447; // CYRILLIC SMALL LETTER CHE
|
|
$df: result:= #$044a; // CYRILLIC SMALL LETTER HARD SIGN
|
|
$e0: result:= #$042e; // CYRILLIC CAPITAL LETTER YU
|
|
$e1: result:= #$0410; // CYRILLIC CAPITAL LETTER A
|
|
$e2: result:= #$0411; // CYRILLIC CAPITAL LETTER BE
|
|
$e3: result:= #$0426; // CYRILLIC CAPITAL LETTER TSE
|
|
$e4: result:= #$0414; // CYRILLIC CAPITAL LETTER DE
|
|
$e5: result:= #$0415; // CYRILLIC CAPITAL LETTER IE
|
|
$e6: result:= #$0424; // CYRILLIC CAPITAL LETTER EF
|
|
$e7: result:= #$0413; // CYRILLIC CAPITAL LETTER GHE
|
|
$e8: result:= #$0425; // CYRILLIC CAPITAL LETTER HA
|
|
$e9: result:= #$0418; // CYRILLIC CAPITAL LETTER I
|
|
$ea: result:= #$0419; // CYRILLIC CAPITAL LETTER SHORT I
|
|
$eb: result:= #$041a; // CYRILLIC CAPITAL LETTER KA
|
|
$ec: result:= #$041b; // CYRILLIC CAPITAL LETTER EL
|
|
$ed: result:= #$041c; // CYRILLIC CAPITAL LETTER EM
|
|
$ee: result:= #$041d; // CYRILLIC CAPITAL LETTER EN
|
|
$ef: result:= #$041e; // CYRILLIC CAPITAL LETTER O
|
|
$f0: result:= #$041f; // CYRILLIC CAPITAL LETTER PE
|
|
$f1: result:= #$042f; // CYRILLIC CAPITAL LETTER YA
|
|
$f2: result:= #$0420; // CYRILLIC CAPITAL LETTER ER
|
|
$f3: result:= #$0421; // CYRILLIC CAPITAL LETTER ES
|
|
$f4: result:= #$0422; // CYRILLIC CAPITAL LETTER TE
|
|
$f5: result:= #$0423; // CYRILLIC CAPITAL LETTER U
|
|
$f6: result:= #$0416; // CYRILLIC CAPITAL LETTER ZHE
|
|
$f7: result:= #$0412; // CYRILLIC CAPITAL LETTER VE
|
|
$f8: result:= #$042c; // CYRILLIC CAPITAL LETTER SOFT SIGN
|
|
$f9: result:= #$042b; // CYRILLIC CAPITAL LETTER YERU
|
|
$fa: result:= #$0417; // CYRILLIC CAPITAL LETTER ZE
|
|
$fb: result:= #$0428; // CYRILLIC CAPITAL LETTER SHA
|
|
$fc: result:= #$042d; // CYRILLIC CAPITAL LETTER E
|
|
$fd: result:= #$0429; // CYRILLIC CAPITAL LETTER SHCHA
|
|
$fe: result:= #$0427; // CYRILLIC CAPITAL LETTER CHE
|
|
$ff: result:= #$042a; // CYRILLIC CAPITAL LETTER HARD SIGN
|
|
else
|
|
result:= WideChar(ord(P));
|
|
end;
|
|
end;
|
|
|
|
function cp10000_MacRomanToUTF16Char(const P: Char):WideChar;
|
|
begin
|
|
case ord(P) of
|
|
$80: result:= #$00c4; // LATIN CAPITAL LETTER A WITH DIAERESIS
|
|
$81: result:= #$00c5; // LATIN CAPITAL LETTER A WITH RING ABOVE
|
|
$82: result:= #$00c7; // LATIN CAPITAL LETTER C WITH CEDILLA
|
|
$83: result:= #$00c9; // LATIN CAPITAL LETTER E WITH ACUTE
|
|
$84: result:= #$00d1; // LATIN CAPITAL LETTER N WITH TILDE
|
|
$85: result:= #$00d6; // LATIN CAPITAL LETTER O WITH DIAERESIS
|
|
$86: result:= #$00dc; // LATIN CAPITAL LETTER U WITH DIAERESIS
|
|
$87: result:= #$00e1; // LATIN SMALL LETTER A WITH ACUTE
|
|
$88: result:= #$00e0; // LATIN SMALL LETTER A WITH GRAVE
|
|
$89: result:= #$00e2; // LATIN SMALL LETTER A WITH CIRCUMFLEX
|
|
$8a: result:= #$00e4; // LATIN SMALL LETTER A WITH DIAERESIS
|
|
$8b: result:= #$00e3; // LATIN SMALL LETTER A WITH TILDE
|
|
$8c: result:= #$00e5; // LATIN SMALL LETTER A WITH RING ABOVE
|
|
$8d: result:= #$00e7; // LATIN SMALL LETTER C WITH CEDILLA
|
|
$8e: result:= #$00e9; // LATIN SMALL LETTER E WITH ACUTE
|
|
$8f: result:= #$00e8; // LATIN SMALL LETTER E WITH GRAVE
|
|
$90: result:= #$00ea; // LATIN SMALL LETTER E WITH CIRCUMFLEX
|
|
$91: result:= #$00eb; // LATIN SMALL LETTER E WITH DIAERESIS
|
|
$92: result:= #$00ed; // LATIN SMALL LETTER I WITH ACUTE
|
|
$93: result:= #$00ec; // LATIN SMALL LETTER I WITH GRAVE
|
|
$94: result:= #$00ee; // LATIN SMALL LETTER I WITH CIRCUMFLEX
|
|
$95: result:= #$00ef; // LATIN SMALL LETTER I WITH DIAERESIS
|
|
$96: result:= #$00f1; // LATIN SMALL LETTER N WITH TILDE
|
|
$97: result:= #$00f3; // LATIN SMALL LETTER O WITH ACUTE
|
|
$98: result:= #$00f2; // LATIN SMALL LETTER O WITH GRAVE
|
|
$99: result:= #$00f4; // LATIN SMALL LETTER O WITH CIRCUMFLEX
|
|
$9a: result:= #$00f6; // LATIN SMALL LETTER O WITH DIAERESIS
|
|
$9b: result:= #$00f5; // LATIN SMALL LETTER O WITH TILDE
|
|
$9c: result:= #$00fa; // LATIN SMALL LETTER U WITH ACUTE
|
|
$9d: result:= #$00f9; // LATIN SMALL LETTER U WITH GRAVE
|
|
$9e: result:= #$00fb; // LATIN SMALL LETTER U WITH CIRCUMFLEX
|
|
$9f: result:= #$00fc; // LATIN SMALL LETTER U WITH DIAERESIS
|
|
$a0: result:= #$2020; // DAGGER
|
|
$a1: result:= #$00b0; // DEGREE SIGN
|
|
$a4: result:= #$00a7; // SECTION SIGN
|
|
$a5: result:= #$2022; // BULLET
|
|
$a6: result:= #$00b6; // PILCROW SIGN
|
|
$a7: result:= #$00df; // LATIN SMALL LETTER SHARP S
|
|
$a8: result:= #$00ae; // REGISTERED SIGN
|
|
$aa: result:= #$2122; // TRADE MARK SIGN
|
|
$ab: result:= #$00b4; // ACUTE ACCENT
|
|
$ac: result:= #$00a8; // DIAERESIS
|
|
$ad: result:= #$2260; // NOT EQUAL TO
|
|
$ae: result:= #$00c6; // LATIN CAPITAL LIGATURE AE
|
|
$af: result:= #$00d8; // LATIN CAPITAL LETTER O WITH STROKE
|
|
$b0: result:= #$221e; // INFINITY
|
|
$b2: result:= #$2264; // LESS-THAN OR EQUAL TO
|
|
$b3: result:= #$2265; // GREATER-THAN OR EQUAL TO
|
|
$b4: result:= #$00a5; // YEN SIGN
|
|
$b6: result:= #$2202; // PARTIAL DIFFERENTIAL
|
|
$b7: result:= #$2211; // N-ARY SUMMATION
|
|
$b8: result:= #$220f; // N-ARY PRODUCT
|
|
$b9: result:= #$03c0; // GREEK SMALL LETTER PI
|
|
$ba: result:= #$222b; // INTEGRAL
|
|
$bb: result:= #$00aa; // FEMININE ORDINAL INDICATOR
|
|
$bc: result:= #$00ba; // MASCULINE ORDINAL INDICATOR
|
|
$bd: result:= #$2126; // OHM SIGN
|
|
$be: result:= #$00e6; // LATIN SMALL LIGATURE AE
|
|
$bf: result:= #$00f8; // LATIN SMALL LETTER O WITH STROKE
|
|
$c0: result:= #$00bf; // INVERTED QUESTION MARK
|
|
$c1: result:= #$00a1; // INVERTED EXCLAMATION MARK
|
|
$c2: result:= #$00ac; // NOT SIGN
|
|
$c3: result:= #$221a; // SQUARE ROOT
|
|
$c4: result:= #$0192; // LATIN SMALL LETTER F WITH HOOK
|
|
$c5: result:= #$2248; // ALMOST EQUAL TO
|
|
$c6: result:= #$2206; // INCREMENT
|
|
$c7: result:= #$00ab; // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
|
$c8: result:= #$00bb; // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
|
$c9: result:= #$2026; // HORIZONTAL ELLIPSIS
|
|
$ca: result:= #$00a0; // NO-BREAK SPACE
|
|
$cb: result:= #$00c0; // LATIN CAPITAL LETTER A WITH GRAVE
|
|
$cc: result:= #$00c3; // LATIN CAPITAL LETTER A WITH TILDE
|
|
$cd: result:= #$00d5; // LATIN CAPITAL LETTER O WITH TILDE
|
|
$ce: result:= #$0152; // LATIN CAPITAL LIGATURE OE
|
|
$cf: result:= #$0153; // LATIN SMALL LIGATURE OE
|
|
$d0: result:= #$2013; // EN DASH
|
|
$d1: result:= #$2014; // EM DASH
|
|
$d2: result:= #$201c; // LEFT DOUBLE QUOTATION MARK
|
|
$d3: result:= #$201d; // RIGHT DOUBLE QUOTATION MARK
|
|
$d4: result:= #$2018; // LEFT SINGLE QUOTATION MARK
|
|
$d5: result:= #$2019; // RIGHT SINGLE QUOTATION MARK
|
|
$d6: result:= #$00f7; // DIVISION SIGN
|
|
$d7: result:= #$25ca; // LOZENGE
|
|
$d8: result:= #$00ff; // LATIN SMALL LETTER Y WITH DIAERESIS
|
|
$d9: result:= #$0178; // LATIN CAPITAL LETTER Y WITH DIAERESIS
|
|
$da: result:= #$2044; // FRACTION SLASH
|
|
$db: result:= #$00a4; // CURRENCY SIGN
|
|
$dc: result:= #$2039; // SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
|
$dd: result:= #$203a; // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
|
$de: result:= #$fb01; // LATIN SMALL LIGATURE FI
|
|
$df: result:= #$fb02; // LATIN SMALL LIGATURE FL
|
|
$e0: result:= #$2021; // DOUBLE DAGGER
|
|
$e1: result:= #$00b7; // MIDDLE DOT
|
|
$e2: result:= #$201a; // SINGLE LOW-9 QUOTATION MARK
|
|
$e3: result:= #$201e; // DOUBLE LOW-9 QUOTATION MARK
|
|
$e4: result:= #$2030; // PER MILLE SIGN
|
|
$e5: result:= #$00c2; // LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
|
$e6: result:= #$00ca; // LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
|
$e7: result:= #$00c1; // LATIN CAPITAL LETTER A WITH ACUTE
|
|
$e8: result:= #$00cb; // LATIN CAPITAL LETTER E WITH DIAERESIS
|
|
$e9: result:= #$00c8; // LATIN CAPITAL LETTER E WITH GRAVE
|
|
$ea: result:= #$00cd; // LATIN CAPITAL LETTER I WITH ACUTE
|
|
$eb: result:= #$00ce; // LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
|
$ec: result:= #$00cf; // LATIN CAPITAL LETTER I WITH DIAERESIS
|
|
$ed: result:= #$00cc; // LATIN CAPITAL LETTER I WITH GRAVE
|
|
$ee: result:= #$00d3; // LATIN CAPITAL LETTER O WITH ACUTE
|
|
$ef: result:= #$00d4; // LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
|
$f0: raise EConvertError.CreateFmt('Invalid cp10000_MacRoman sequence "%s"',[P]);
|
|
$f1: result:= #$00d2; // LATIN CAPITAL LETTER O WITH GRAVE
|
|
$f2: result:= #$00da; // LATIN CAPITAL LETTER U WITH ACUTE
|
|
$f3: result:= #$00db; // LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
|
$f4: result:= #$00d9; // LATIN CAPITAL LETTER U WITH GRAVE
|
|
$f5: result:= #$0131; // LATIN SMALL LETTER DOTLESS I
|
|
$f6: result:= #$02c6; // MODIFIER LETTER CIRCUMFLEX ACCENT
|
|
$f7: result:= #$02dc; // SMALL TILDE
|
|
$f8: result:= #$00af; // MACRON
|
|
$f9: result:= #$02d8; // BREVE
|
|
$fa: result:= #$02d9; // DOT ABOVE
|
|
$fb: result:= #$02da; // RING ABOVE
|
|
$fc: result:= #$00b8; // CEDILLA
|
|
$fd: result:= #$02dd; // DOUBLE ACUTE ACCENT
|
|
$fe: result:= #$02db; // OGONEK
|
|
$ff: result:= #$02c7; // CARON
|
|
else
|
|
result:= WideChar(ord(P));
|
|
end;
|
|
end;
|
|
|
|
function cp1250ToUTF16Char(const P: Char):WideChar;
|
|
// This function was provided by Miloslav Skácel
|
|
const
|
|
sInvalidWindows1250Sequence = 'Invalid Windows-1250 sequence "%s"';
|
|
begin
|
|
case ord(p) of
|
|
// NOT USED
|
|
$81,$83,$88,$90,$98:
|
|
raise EConvertError.CreateFmt(sInvalidWindows1250Sequence,[P]);
|
|
$80: result:= #$20ac; // EURO SIGN
|
|
$82: Result:= #$201a; // SINGLE LOW-9 QUOTATION MARK
|
|
$84: Result:= #$201e; // DOUBLE LOW-9 QUOTATION MARK
|
|
$85: Result:= #$2026; // HORIZONTAL ELLIPSIS
|
|
$86: Result:= #$2020; // DAGGER
|
|
$87: Result:= #$2021; // DOUBLE DAGGER
|
|
$89: Result:= #$2030; // PER MILLE SIGN
|
|
$8a: Result:= #$0160; // LATIN CAPITAL LETTER S WITH CARON
|
|
$8b: Result:= #$2039; // SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
|
$8c: Result:= #$015a; // LATIN CAPITAL LETTER S WITH ACUTE
|
|
$8d: Result:= #$0164; // LATIN CAPITAL LETTER T WITH CARON
|
|
$8e: Result:= #$017d; // LATIN CAPITAL LETTER Z WITH CARON
|
|
$8f: Result:= #$0179; // LATIN CAPITAL LETTER Z WITH ACUTE
|
|
$91: Result:= #$2018; // LEFT SINGLE QUOTATION MARK
|
|
$92: Result:= #$2019; // RIGHT SINGLE QUOTATION MARK
|
|
$93: Result:= #$201c; // LEFT DOUBLE QUOTATION MARK
|
|
$94: Result:= #$201d; // RIGHT DOUBLE QUOTATION MARK
|
|
$95: Result:= #$2022; // BULLET
|
|
$96: Result:= #$2013; // EN-DASH
|
|
$97: Result:= #$2014; // EM-DASH
|
|
$99: Result:= #$2122; // TRADE MARK SIGN
|
|
$9a: Result:= #$0161; // LATIN SMALL LETTER S WITH CARON
|
|
$9b: Result:= #$203a; // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
|
$9c: Result:= #$015b; // LATIN SMALL LETTER S WITH ACUTE
|
|
$9d: Result:= #$0165; // LATIN SMALL LETTER T WITH CARON
|
|
$9e: Result:= #$017e; // LATIN SMALL LETTER Z WITH CARON
|
|
$9f: Result:= #$017a; // LATIN SMALL LETTER Z WITH ACUTE
|
|
$a0: Result:= #$00a0; // NO-BREAK SPACE
|
|
$a1: Result:= #$02c7; // CARON
|
|
$a2: Result:= #$02d8; // BREVE
|
|
$a3: Result:= #$0141; // LATIN CAPITAL LETTER L WITH STROKE
|
|
$a4: Result:= #$00a4; // CURRENCY SIGN
|
|
$a5: Result:= #$0104; // LATIN CAPITAL LETTER A WITH OGONEK
|
|
$a6: Result:= #$00a6; // BROKEN BAR
|
|
$a7: Result:= #$00a7; // SECTION SIGN
|
|
$a8: Result:= #$00a8; // DIAERESIS
|
|
$a9: Result:= #$00a9; // COPYRIGHT SIGN
|
|
$aa: Result:= #$015e; // LATIN CAPITAL LETTER S WITH CEDILLA
|
|
$ab: Result:= #$00ab; // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
|
$ac: Result:= #$00ac; // NOT SIGN
|
|
$ad: Result:= #$00ad; // SOFT HYPHEN
|
|
$ae: Result:= #$00ae; // REGISTERED SIGN
|
|
$af: Result:= #$017b; // LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
|
$b0: Result:= #$00b0; // DEGREE SIGN
|
|
$b1: Result:= #$00b1; // PLUS-MINUS SIGN
|
|
$b2: Result:= #$02db; // OGONEK
|
|
$b3: Result:= #$0142; // LATIN SMALL LETTER L WITH STROKE
|
|
$b4: Result:= #$00b4; // ACUTE ACCENT
|
|
$b5: Result:= #$00b5; // MIKRO SIGN
|
|
$b6: Result:= #$00b6; // PILCROW SIGN
|
|
$b7: Result:= #$00b7; // MIDDLE DOT
|
|
$b8: Result:= #$00b8; // CEDILLA
|
|
$b9: Result:= #$0105; // LATIN SMALL LETTER A WITH OGONEK
|
|
$ba: Result:= #$015f; // LATIN SMALL LETTER S WITH CEDILLA
|
|
$bb: Result:= #$00bb; // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
|
$bc: Result:= #$013d; // LATIN CAPITAL LETTER L WITH CARON
|
|
$bd: Result:= #$02dd; // DOUBLE ACUTE ACCENT
|
|
$be: Result:= #$013e; // LATIN SMALL LETTER L WITH CARON
|
|
$bf: Result:= #$017c; // LATIN SMALL LETTER Z WITH DOT ABOVE
|
|
$c0: Result:= #$0154; // LATIN CAPITAL LETTER R WITH ACUTE
|
|
$c1: Result:= #$00c1; // LATIN CAPITAL LETTER A WITH ACUTE
|
|
$c2: Result:= #$00c2; // LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
|
$c3: Result:= #$0102; // LATIN CAPITAL LETTER A WITH BREVE
|
|
$c4: Result:= #$00c4; // LATIN CAPITAL LETTER A WITH DIAERESIS
|
|
$c5: Result:= #$0139; // LATIN CAPITAL LETTER L WITH ACUTE
|
|
$c6: Result:= #$0106; // LATIN CAPITAL LETTER C WITH ACUTE
|
|
$c7: Result:= #$00c7; // LATIN CAPITAL LETTER C WITH CEDILLA
|
|
$c8: Result:= #$010c; // LATIN CAPITAL LETTER C WITH CARON
|
|
$c9: Result:= #$00c9; // LATIN CAPITAL LETTER E WITH ACUTE
|
|
$ca: Result:= #$0118; // LATIN CAPITAL LETTER E WITH OGONEK
|
|
$cb: Result:= #$00cb; // LATIN CAPITAL LETTER E WITH DIAERESIS
|
|
$cc: Result:= #$011a; // LATIN CAPITAL LETTER E WITH CARON
|
|
$cd: Result:= #$00cd; // LATIN CAPITAL LETTER I WITH ACUTE
|
|
$ce: Result:= #$00ce; // LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
|
$cf: Result:= #$010e; // LATIN CAPITAL LETTER D WITH CARON
|
|
$d0: Result:= #$0110; // LATIN CAPITAL LETTER D WITH STROKE
|
|
$d1: Result:= #$0143; // LATIN CAPITAL LETTER N WITH ACUTE
|
|
$d2: Result:= #$0147; // LATIN CAPITAL LETTER N WITH CARON
|
|
$d3: Result:= #$00d3; // LATIN CAPITAL LETTER O WITH ACUTE
|
|
$d4: Result:= #$00d4; // LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
|
$d5: Result:= #$0150; // LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
|
|
$d6: Result:= #$00d6; // LATIN CAPITAL LETTER O WITH DIAERESIS
|
|
$d7: Result:= #$00d7; // MULTIPLICATION SIGN
|
|
$d8: Result:= #$0158; // LATIN CAPITAL LETTER R WITH CARON
|
|
$d9: Result:= #$016e; // LATIN CAPITAL LETTER U WITH RING ABOVE
|
|
$da: Result:= #$00da; // LATIN CAPITAL LETTER U WITH ACUTE
|
|
$db: Result:= #$0170; // LATIN CAPITAL LETTER U WITH WITH DOUBLE ACUTE
|
|
$dc: Result:= #$00dc; // LATIN CAPITAL LETTER U WITH DIAERESIS
|
|
$dd: Result:= #$00dd; // LATIN CAPITAL LETTER Y WITH ACUTE
|
|
$de: Result:= #$0162; // LATIN CAPITAL LETTER T WITH CEDILLA
|
|
$df: Result:= #$00df; // LATIN SMALL LETTER SHARP S
|
|
$e0: Result:= #$0155; // LATIN SMALL LETTER R WITH ACUTE
|
|
$e1: Result:= #$00e1; // LATIN SMALL LETTER A WITH ACUTE
|
|
$e2: Result:= #$00e2; // LATIN SMALL LETTER A WITH CIRCUMFLEX
|
|
$e3: Result:= #$0103; // LATIN SMALL LETTER A WITH BREVE
|
|
$e4: Result:= #$00e4; // LATIN SMALL LETTER A WITH DIAERESIS
|
|
$e5: Result:= #$013a; // LATIN SMALL LETTER L WITH ACUTE
|
|
$e6: Result:= #$0107; // LATIN SMALL LETTER C WITH ACUTE
|
|
$e7: Result:= #$00e7; // LATIN SMALL LETTER C WITH CEDILLA
|
|
$e8: Result:= #$010d; // LATIN SMALL LETTER C WITH CARON 100D
|
|
$e9: Result:= #$00e9; // LATIN SMALL LETTER E WITH ACUTE
|
|
$ea: Result:= #$0119; // LATIN SMALL LETTER E WITH OGONEK
|
|
$eb: Result:= #$00eb; // LATIN SMALL LETTER E WITH DIAERESIS
|
|
$ec: Result:= #$011b; // LATIN SMALL LETTER E WITH CARON
|
|
$ed: Result:= #$00ed; // LATIN SMALL LETTER I WITH ACUTE
|
|
$ee: Result:= #$00ee; // LATIN SMALL LETTER I WITH CIRCUMFLEX
|
|
$ef: Result:= #$010f; // LATIN SMALL LETTER D WITH CARON
|
|
$f0: Result:= #$0111; // LATIN SMALL LETTER D WITH STROKE
|
|
$f1: Result:= #$0144; // LATIN SMALL LETTER N WITH ACUTE
|
|
$f2: Result:= #$0148; // LATIN SMALL LETTER N WITH CARON
|
|
$f3: Result:= #$00f3; // LATIN SMALL LETTER O WITH ACUTE
|
|
$f4: Result:= #$00f4; // LATIN SMALL LETTER O WITH CIRCUMFLEX
|
|
$f5: Result:= #$0151; // LATIN SMALL LETTER O WITH DOUBLE ACUTE
|
|
$f6: Result:= #$00f6; // LATIN SMALL LETTER O WITH DIAERESIS
|
|
$f7: Result:= #$00f7; // DIVISION SIGN
|
|
$f8: Result:= #$0159; // LATIN SMALL LETTER R WITH CARON
|
|
$f9: Result:= #$016f; // LATIN SMALL LETTER U WITH RING ABOVE
|
|
$fa: Result:= #$00fa; // LATIN SMALL LETTER U WITH ACUTE
|
|
$fb: Result:= #$0171; // LATIN SMALL LETTER U WITH WITH DOUBLE ACUTE
|
|
$fc: Result:= #$00fc; // LATIN SMALL LETTER U WITH DIAERESIS
|
|
$fd: Result:= #$00fd; // LATIN SMALL LETTER Y WITH ACUTE
|
|
$fe: Result:= #$0163; // LATIN SMALL LETTER T WITH CEDILLA
|
|
$ff: Result:= #$02d9; // DOT ABOVE
|
|
else
|
|
Result:= WideChar(ord(P));
|
|
end;
|
|
end;
|
|
|
|
function cp1251ToUTF16Char(const P: Char):WideChar;
|
|
begin
|
|
case ord(P) of
|
|
$80: result:= #$0402; // CYRILLIC CAPITAL LETTER DJE
|
|
$81: result:= #$0403; // CYRILLIC CAPITAL LETTER GJE
|
|
$82: result:= #$201a; // SINGLE LOW-9 QUOTATION MARK
|
|
$83: result:= #$0453; // CYRILLIC SMALL LETTER GJE
|
|
$84: result:= #$201e; // DOUBLE LOW-9 QUOTATION MARK
|
|
$85: result:= #$2026; // HORIZONTAL ELLIPSIS
|
|
$86: result:= #$2020; // DAGGER
|
|
$87: result:= #$2021; // DOUBLE DAGGER
|
|
$88: result:= #$20ac; // EURO SIGN
|
|
$89: result:= #$2030; // PER MILLE SIGN
|
|
$8a: result:= #$0409; // CYRILLIC CAPITAL LETTER LJE
|
|
$8b: result:= #$2039; // SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
|
$8c: result:= #$040a; // CYRILLIC CAPITAL LETTER NJE
|
|
$8d: result:= #$040c; // CYRILLIC CAPITAL LETTER KJE
|
|
$8e: result:= #$040b; // CYRILLIC CAPITAL LETTER TSHE
|
|
$8f: result:= #$040f; // CYRILLIC CAPITAL LETTER DZHE
|
|
$90: result:= #$0452; // CYRILLIC SMALL LETTER DJE
|
|
$91: result:= #$2018; // LEFT SINGLE QUOTATION MARK
|
|
$92: result:= #$2019; // RIGHT SINGLE QUOTATION MARK
|
|
$93: result:= #$201c; // LEFT DOUBLE QUOTATION MARK
|
|
$94: result:= #$201d; // RIGHT DOUBLE QUOTATION MARK
|
|
$95: result:= #$2022; // BULLET
|
|
$96: result:= #$2013; // EN DASH
|
|
$97: result:= #$2014; // EM DASH
|
|
$98: raise EConvertError.CreateFmt('Invalid cp1251 sequence "%s"',[P]);
|
|
$99: result:= #$2122; // TRADE MARK SIGN
|
|
$9a: result:= #$0459; // CYRILLIC SMALL LETTER LJE
|
|
$9b: result:= #$203a; // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
|
$9c: result:= #$045a; // CYRILLIC SMALL LETTER NJE
|
|
$9d: result:= #$045c; // CYRILLIC SMALL LETTER KJE
|
|
$9e: result:= #$045b; // CYRILLIC SMALL LETTER TSHE
|
|
$9f: result:= #$045f; // CYRILLIC SMALL LETTER DZHE
|
|
$a0: result:= #$00a0; // NO-BREAK SPACE
|
|
$a1: result:= #$040e; // CYRILLIC CAPITAL LETTER SHORT U
|
|
$a2: result:= #$045e; // CYRILLIC SMALL LETTER SHORT U
|
|
$a3: result:= #$0408; // CYRILLIC CAPITAL LETTER JE
|
|
$a4: result:= #$00a4; // CURRENCY SIGN
|
|
$a5: result:= #$0490; // CYRILLIC CAPITAL LETTER GHE WITH UPTURN
|
|
$a8: result:= #$0401; // CYRILLIC CAPITAL LETTER IO
|
|
$aa: result:= #$0404; // CYRILLIC CAPITAL LETTER UKRAINIAN IE
|
|
$af: result:= #$0407; // CYRILLIC CAPITAL LETTER YI
|
|
$b2: result:= #$0406; // CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
|
|
$b3: result:= #$0456; // CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
|
|
$b4: result:= #$0491; // CYRILLIC SMALL LETTER GHE WITH UPTURN
|
|
$b8: result:= #$0451; // CYRILLIC SMALL LETTER IO
|
|
$b9: result:= #$2116; // NUMERO SIGN
|
|
$ba: result:= #$0454; // CYRILLIC SMALL LETTER UKRAINIAN IE
|
|
$bc: result:= #$0458; // CYRILLIC SMALL LETTER JE
|
|
$bd: result:= #$0405; // CYRILLIC CAPITAL LETTER DZE
|
|
$be: result:= #$0455; // CYRILLIC SMALL LETTER DZE
|
|
$bf: result:= #$0457; // CYRILLIC SMALL LETTER YI
|
|
$c0..$ff:
|
|
result:= WideChar(ord(P)+$350);
|
|
else
|
|
result:= WideChar(ord(P));
|
|
end;
|
|
end;
|
|
|
|
function cp1252ToUTF16Char(const P: Char):WideChar;
|
|
// Provided by Olaf Lösken.
|
|
// Info taken from
|
|
// ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1252.TXT
|
|
const
|
|
sInvalidWindows1252Sequence = 'Invalid Windows-1252 sequence "%s"';
|
|
begin
|
|
case ord(p) of
|
|
$80 : result:= #$20AC; //EUROSIGN
|
|
$81 : raise EConvertError.CreateFmt(sInvalidWindows1252Sequence,[P]);
|
|
$82 : result:= #$201A; //SINGLE LOW-9 QUOTATION MARK
|
|
$83 : result:= #$0192; //ATIN SMALL LETTER F WITH HOOK
|
|
$84 : result:= #$201E; //DOUBLE LOW-9 QUOTATION MARK
|
|
$85 : result:= #$2026; //HORIZONTAL ELLIPSIS
|
|
$86 : result:= #$2020; //DAGGER
|
|
$87 : result:= #$2021; //DOUBLE DAGGER
|
|
$88 : result:= #$02C6; //MODIFIER LETTER CIRCUMFLEX ACCENT
|
|
$89 : result:= #$2030; //PER MILLE SIGN
|
|
$8A : result:= #$0160; //LATIN CAPITAL LETTER S WITH CARON
|
|
$8B : result:= #$2039; //SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
|
$8C : result:= #$0152; //LATIN CAPITAL LIGATURE OE
|
|
$8D : raise EConvertError.CreateFmt(sInvalidWindows1252Sequence,[P]);
|
|
$8E : result:= #$017D; //LATIN CAPITAL LETTER Z WITH CARON
|
|
$8F : raise EConvertError.CreateFmt(sInvalidWindows1252Sequence,[P]);
|
|
$90 : raise EConvertError.CreateFmt(sInvalidWindows1252Sequence,[P]);
|
|
$91 : result:= #$2018; //LEFT SINGLE QUOTATION MARK
|
|
$92 : result:= #$2019; //RIGHT SINGLE QUOTATION MARK
|
|
$93 : result:= #$201C; //LEFT DOUBLE QUOTATION MARK
|
|
$94 : result:= #$201D; //RIGHT DOUBLE QUOTATION MARK
|
|
$95 : result:= #$2022; //BULLET
|
|
$96 : result:= #$2013; //EN DASH
|
|
$97 : result:= #$2014; //EM DASH
|
|
$98 : result:= #$02DC; //SMALL TILDE
|
|
$99 : result:= #$2122; //TRADE MARK SIGN
|
|
$9A : result:= #$0161; //LATIN SMALL LETTER S WITH CARON
|
|
$9B : result:= #$203A; //SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
|
$9C : result:= #$0153; //LATIN SMALL LIGATURE OE
|
|
$9D : raise EConvertError.CreateFmt(sInvalidWindows1252Sequence,[P]);
|
|
$9E : result:= #$017E; //LATIN SMALL LETTER Z WITH CARON
|
|
$9F : result:= #$0178; //LATIN CAPITAL LETTER Y WITH D
|
|
else
|
|
Result:= WideChar(ord(P));
|
|
end;
|
|
end;
|
|
|
|
function Iso8859_1ToUTF16Str(const s: string): wideString;
|
|
// Converts an ISO-8859-1 string into an UTF-16 wideString.
|
|
// No special conversions (e.g. on line breaks) are done.
|
|
var
|
|
i,j: integer;
|
|
begin
|
|
j:= length(s);
|
|
setLength(Result,j);
|
|
for i:= 1 to j do
|
|
Result[i]:=Iso8859_1ToUTF16Char(s[i]);
|
|
end;
|
|
|
|
function Iso8859_2ToUTF16Str(const s: string): wideString;
|
|
// Converts an ISO-8859-2 string into an UTF-16 wideString.
|
|
// No special conversions (e.g. on line breaks) are done.
|
|
var
|
|
i,j: integer;
|
|
begin
|
|
j:= length(s);
|
|
setLength(Result,j);
|
|
for i:= 1 to j do
|
|
Result[i]:=Iso8859_2ToUTF16Char(s[i]);
|
|
end;
|
|
|
|
function Iso8859_3ToUTF16Str(const s: string): wideString;
|
|
// Converts an ISO-8859-3 string into an UTF-16 wideString.
|
|
// No special conversions (e.g. on line breaks) are done.
|
|
var
|
|
i,j: integer;
|
|
begin
|
|
j:= length(s);
|
|
setLength(Result,j);
|
|
for i:= 1 to j do
|
|
Result[i]:=Iso8859_3ToUTF16Char(s[i]);
|
|
end;
|
|
|
|
function Iso8859_4ToUTF16Str(const s: string): wideString;
|
|
// Converts an ISO-8859-4 string into an UTF-16 wideString.
|
|
// No special conversions (e.g. on line breaks) are done.
|
|
var
|
|
i,j: integer;
|
|
begin
|
|
j:= length(s);
|
|
setLength(Result,j);
|
|
for i:= 1 to j do
|
|
Result[i]:=Iso8859_4ToUTF16Char(s[i]);
|
|
end;
|
|
|
|
function Iso8859_5ToUTF16Str(const s: string): wideString;
|
|
// Converts an ISO-8859-5 string into an UTF-16 wideString.
|
|
// No special conversions (e.g. on line breaks) are done.
|
|
var
|
|
i,j: integer;
|
|
begin
|
|
j:= length(s);
|
|
setLength(Result,j);
|
|
for i:= 1 to j do
|
|
Result[i]:=Iso8859_5ToUTF16Char(s[i]);
|
|
end;
|
|
|
|
function Iso8859_6ToUTF16Str(const s: string): wideString;
|
|
// Converts an ISO-8859-6 string into an UTF-16 wideString.
|
|
// No special conversions (e.g. on line breaks) are done.
|
|
var
|
|
i,j: integer;
|
|
begin
|
|
j:= length(s);
|
|
setLength(Result,j);
|
|
for i:= 1 to j do
|
|
Result[i]:=Iso8859_6ToUTF16Char(s[i]);
|
|
end;
|
|
|
|
function Iso8859_7ToUTF16Str(const s: string): wideString;
|
|
// Converts an ISO-8859-7 string into an UTF-16 wideString.
|
|
// No special conversions (e.g. on line breaks) are done.
|
|
var
|
|
i,j: integer;
|
|
begin
|
|
j:= length(s);
|
|
setLength(Result,j);
|
|
for i:= 1 to j do
|
|
Result[i]:=Iso8859_7ToUTF16Char(s[i]);
|
|
end;
|
|
|
|
function Iso8859_8ToUTF16Str(const s: string): wideString;
|
|
// Converts an ISO-8859-8 string into an UTF-16 wideString.
|
|
// No special conversions (e.g. on line breaks) are done.
|
|
var
|
|
i,j: integer;
|
|
begin
|
|
j:= length(s);
|
|
setLength(Result,j);
|
|
for i:= 1 to j do
|
|
Result[i]:=Iso8859_8ToUTF16Char(s[i]);
|
|
end;
|
|
|
|
function Iso8859_9ToUTF16Str(const s: string): wideString;
|
|
// Converts an ISO-8859-9 string into an UTF-16 wideString.
|
|
// No special conversions (e.g. on line breaks) are done.
|
|
var
|
|
i,j: integer;
|
|
begin
|
|
j:= length(s);
|
|
setLength(Result,j);
|
|
for i:= 1 to j do
|
|
Result[i]:=Iso8859_9ToUTF16Char(s[i]);
|
|
end;
|
|
|
|
function Iso8859_10ToUTF16Str(const s: string): wideString;
|
|
// Converts an ISO-8859-10 string into an UTF-16 wideString.
|
|
// No special conversions (e.g. on line breaks) are done.
|
|
var
|
|
i,j: integer;
|
|
begin
|
|
j:= length(s);
|
|
setLength(Result,j);
|
|
for i:= 1 to j do
|
|
Result[i]:=Iso8859_10ToUTF16Char(s[i]);
|
|
end;
|
|
|
|
function Iso8859_13ToUTF16Str(const s: string): wideString;
|
|
// Converts an ISO-8859-13 string into an UTF-16 wideString.
|
|
// No special conversions (e.g. on line breaks) are done.
|
|
var
|
|
i,j: integer;
|
|
begin
|
|
j:= length(s);
|
|
setLength(Result,j);
|
|
for i:= 1 to j do
|
|
Result[i]:=Iso8859_13ToUTF16Char(s[i]);
|
|
end;
|
|
|
|
function Iso8859_14ToUTF16Str(const s: string): wideString;
|
|
// Converts an ISO-8859-14 string into an UTF-16 wideString.
|
|
// No special conversions (e.g. on line breaks) are done.
|
|
var
|
|
i,j: integer;
|
|
begin
|
|
j:= length(s);
|
|
setLength(Result,j);
|
|
for i:= 1 to j do
|
|
Result[i]:=Iso8859_14ToUTF16Char(s[i]);
|
|
end;
|
|
|
|
function Iso8859_15ToUTF16Str(const s: string): wideString;
|
|
// Converts an ISO-8859-15 string into an UTF-16 wideString.
|
|
// No special conversions (e.g. on line breaks) are done.
|
|
var
|
|
i,j: integer;
|
|
begin
|
|
j:= length(s);
|
|
setLength(Result,j);
|
|
for i:= 1 to j do
|
|
Result[i]:=Iso8859_15ToUTF16Char(s[i]);
|
|
end;
|
|
|
|
function KOI8_RToUTF16Str(const s: string): wideString;
|
|
// Converts an KOI8-R string into an UTF-16 wideString.
|
|
// No special conversions (e.g. on line breaks) are done.
|
|
var
|
|
i,j: integer;
|
|
begin
|
|
j:= length(s);
|
|
setLength(Result,j);
|
|
for i:= 1 to j do
|
|
Result[i]:=KOI8_RToUTF16Char(s[i]);
|
|
end;
|
|
|
|
function cp10000_MacRomanToUTF16Str(const s: string): wideString;
|
|
// Converts an cp10000_MacRoman string into an UTF-16 wideString.
|
|
// No special conversions (e.g. on line breaks) are done.
|
|
var
|
|
i,j: integer;
|
|
begin
|
|
j:= length(s);
|
|
setLength(Result,j);
|
|
for i:= 1 to j do
|
|
Result[i]:=cp10000_MacRomanToUTF16Char(s[i]);
|
|
end;
|
|
|
|
function cp1250ToUTF16Str(const s: string): wideString;
|
|
// Converts an cp1250 string into an UTF-16 wideString.
|
|
// No special conversions (e.g. on line breaks) are done.
|
|
var
|
|
i,j: integer;
|
|
begin
|
|
j:= length(s);
|
|
setLength(Result,j);
|
|
for i:= 1 to j do
|
|
Result[i]:=cp1250ToUTF16Char(s[i]);
|
|
end;
|
|
|
|
function cp1251ToUTF16Str(const s: string): wideString;
|
|
// Converts an cp1251 string into an UTF-16 wideString.
|
|
// No special conversions (e.g. on line breaks) are done.
|
|
var
|
|
i,j: integer;
|
|
begin
|
|
j:= length(s);
|
|
setLength(Result,j);
|
|
for i:= 1 to j do
|
|
Result[i]:=cp1251ToUTF16Char(s[i]);
|
|
end;
|
|
|
|
function cp1252ToUTF16Str(const s: string): wideString;
|
|
// Converts an cp1252 string into an UTF-16 wideString.
|
|
// No special conversions (e.g. on line breaks) are done.
|
|
var
|
|
i,j: integer;
|
|
begin
|
|
j:= length(s);
|
|
setLength(Result,j);
|
|
for i:= 1 to j do
|
|
Result[i]:=cp1252ToUTF16Char(s[i]);
|
|
end;
|
|
|
|
function UTF8ToUTF16BEStr(const s: string): wideString;
|
|
// Converts an UTF-8 string into an UTF-16 wideString.
|
|
// No special conversions (e.g. on line breaks) and
|
|
// no XML-char checking are done.
|
|
// - This function was provided by Ernst van der Pols -
|
|
// - and slightly modified by Dieter Köhler -
|
|
const
|
|
MaxCode: array[1..6] of integer = ($7F,$7FF,$FFFF,$1FFFFF,$3FFFFFF,$7FFFFFFF);
|
|
var
|
|
i, j, CharSize, mask, ucs4: integer;
|
|
c, first: char;
|
|
begin
|
|
setLength(Result,Length(s)+1); // assume no or little above-ASCII-chars
|
|
j:=0; // keep track of actual length
|
|
i:=0;
|
|
while i<length(s) do
|
|
begin
|
|
Inc(i); c:=s[i];
|
|
if ord(c)>=$80 then // UTF-8 sequence
|
|
begin
|
|
CharSize:=1;
|
|
first:=c; mask:=$40; ucs4:=ord(c);
|
|
if (ord(c) and $C0<>$C0) then
|
|
raise EConvertError.CreateFmt('Invalid UTF-8 sequence %2.2X',[ord(c)]);
|
|
while (mask and ord(first)<>0) do
|
|
begin
|
|
// read next character of stream
|
|
if i=length(s) then
|
|
raise EConvertError.CreateFmt('Aborted UTF-8 sequence "%s"',[Copy(s,i-CharSize,CharSize)]);
|
|
Inc(i); c:=s[i];
|
|
if (ord(c) and $C0<>$80) then
|
|
raise EConvertError.CreateFmt('Invalid UTF-8 sequence $%2.2X',[ord(c)]);
|
|
ucs4:=(ucs4 shl 6) or (ord(c) and $3F); // add bits to result
|
|
Inc(CharSize); // increase sequence length
|
|
mask:=mask shr 1; // adjust mask
|
|
end;
|
|
if (CharSize>6) then // no 0 bit in sequence header 'first'
|
|
raise EConvertError.CreateFmt('Invalid UTF-8 sequence "%s"',[Copy(s,i-CharSize,CharSize)]);
|
|
ucs4:=ucs4 and MaxCode[CharSize]; // dispose of header bits
|
|
// check for invalid sequence as suggested by RFC2279
|
|
if ((CharSize>1) and (ucs4<=MaxCode[CharSize-1])) then
|
|
raise EConvertError.CreateFmt('Invalid UTF-8 encoding "%s"',[Copy(s,i-CharSize,CharSize)]);
|
|
// convert non-ASCII UCS-4 to UTF-16 if possible
|
|
case ucs4 of
|
|
$00000080..$0000D7FF,$0000E000..$0000FFFD:
|
|
begin
|
|
Inc(j); Result[j]:=WideChar(ord(c));
|
|
end;
|
|
$0000D800..$0000DFFF,$0000FFFE,$0000FFFF:
|
|
raise EConvertError.CreateFmt('Invalid UCS-4 character $%8.8X',[ucs4]);
|
|
$00010000..$0010FFFF:
|
|
begin
|
|
// add high surrogate to content as if it was processed earlier
|
|
Inc(j); Result[j]:= Utf16HighSurrogate(ucs4); // assign high surrogate
|
|
Inc(j); Result[j]:= Utf16LowSurrogate(ucs4); // assign low surrogate
|
|
end;
|
|
else // out of UTF-16 range
|
|
raise EConvertError.CreateFmt('Cannot convert $%8.8X to UTF-16',[ucs4]);
|
|
end;
|
|
end
|
|
else // ASCII char
|
|
begin
|
|
Inc(j); Result[j]:=WideChar(ord(c));
|
|
end;
|
|
end;
|
|
setLength(Result,j); // set to correct length
|
|
end;
|
|
|
|
function UTF16BEToUTF8Str(const ws: wideString;
|
|
const expandLF: boolean): string;
|
|
var
|
|
StringStr: TStringStream;
|
|
UTF16To8: TUTF16BEToUTF8Stream;
|
|
begin
|
|
StringStr := TStringStream.create('');
|
|
try
|
|
UTF16To8 := TUTF16BEToUTF8Stream.create(StringStr);
|
|
try
|
|
UTF16To8.ExpandLF := expandLF;
|
|
UTF16To8.WriteBuffer(pointer(ws)^, Length(ws) shl 1);
|
|
finally
|
|
UTF16To8.Free;
|
|
end;
|
|
Result := StringStr.DataString;
|
|
finally
|
|
StringStr.Free;
|
|
end;
|
|
end;
|
|
|
|
function UTF16To7BitASCIIChar(const P: wideChar): char;
|
|
begin
|
|
case ord(p) of
|
|
$00..$7f: result:= char(ord(p));
|
|
else
|
|
raise EConvertError.CreateFmt('Invalid 7BitASCII sequence "%s"',[P]);
|
|
end;
|
|
end;
|
|
|
|
function UTF16ToIso8859_1Char(const P: wideChar): char;
|
|
begin
|
|
case ord(p) of
|
|
$00..$ff: result:= char(ord(p));
|
|
else
|
|
raise EConvertError.CreateFmt('Invalid ISO-8859-1 sequence "%s"',[P]);
|
|
end;
|
|
end;
|
|
|
|
function UTF16To7BitASCIIStr(const S: wideString): string;
|
|
var
|
|
i,j,start: integer;
|
|
encType: TdomEncodingType;
|
|
begin
|
|
j:= length(s);
|
|
start:= 1;
|
|
encType:= etUTF16BE;
|
|
if j > 0 then begin
|
|
// Byte order mark?
|
|
if s[1] = #$feff then start:= 2
|
|
else if s[1] = #$fffe then begin start:= 2; encType:= etUTF16LE; end;
|
|
end;
|
|
setLength(Result,j-start+1);
|
|
if encType = etUTF16BE
|
|
then for i:= start to j do Result[i]:= UTF16To7BitASCIIChar(s[i])
|
|
else for i:= start to j do Result[i]:= UTF16To7BitASCIIChar(wideChar(Swap(ord(s[i]))));
|
|
end;
|
|
|
|
function UTF16ToIso8859_1Str(const S: wideString): string;
|
|
var
|
|
i,j,start: integer;
|
|
encType: TdomEncodingType;
|
|
begin
|
|
j:= length(s);
|
|
start:= 1;
|
|
encType:= etUTF16BE;
|
|
if j > 0 then begin
|
|
// Byte order mark?
|
|
if s[1] = #$feff then start:= 2
|
|
else if s[1] = #$fffe then begin start:= 2; encType:= etUTF16LE; end;
|
|
end;
|
|
setLength(Result,j-start+1);
|
|
if encType = etUTF16BE
|
|
then for i:= start to j do Result[i]:= UTF16ToIso8859_1Char(s[i])
|
|
else for i:= start to j do Result[i]:= UTF16ToIso8859_1Char(wideChar(Swap(ord(s[i]))));
|
|
end;
|
|
|
|
function Utf16HighSurrogate(const value: integer): WideChar;
|
|
var
|
|
value2: word;
|
|
begin
|
|
value2:= ($D7C0 + ( value shr 10 ));
|
|
Result:= WideChar(value2);
|
|
end;
|
|
|
|
function Utf16LowSurrogate(const value: integer): WideChar;
|
|
var
|
|
value2: word;
|
|
begin
|
|
value2:= ($DC00 XOR (value AND $3FF));
|
|
Result:= WideChar(value2);
|
|
end;
|
|
|
|
function Utf16SurrogateToInt(const highSurrogate, lowSurrogate: WideChar): integer;
|
|
begin
|
|
Result:= ( (word(highSurrogate) - $D7C0) shl 10 )
|
|
+ ( word(lowSurrogate) XOR $DC00 );
|
|
end;
|
|
|
|
function IsUtf16HighSurrogate(const S: WideChar): boolean;
|
|
begin
|
|
Case Word(S) of
|
|
$D800..$DBFF: result:= true;
|
|
else
|
|
result:= false;
|
|
end;
|
|
end;
|
|
|
|
function IsUtf16LowSurrogate(const S: WideChar): boolean;
|
|
begin
|
|
Case Word(S) of
|
|
$DC00..$DFFF: result:= true;
|
|
else
|
|
result:= false;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
{ TCSMIB }
|
|
|
|
constructor TCSMIB.Create(AOwner: TComponent);
|
|
begin
|
|
inherited;
|
|
Enum:= 3;
|
|
end;
|
|
|
|
procedure TCSMIB.DoChange(Sender: TObject);
|
|
begin
|
|
if assigned(FOnChange)
|
|
then FOnChange(Sender);
|
|
end;
|
|
|
|
procedure TCSMIB.DoChanging(Sender: TObject; NewEnum: integer;
|
|
var AllowChange: Boolean);
|
|
begin
|
|
if assigned(FOnChanging)
|
|
then FOnChanging(Sender,NewEnum,AllowChange);
|
|
end;
|
|
|
|
function TCSMIB.GetAlias(i: integer): string;
|
|
begin
|
|
case FEnum of
|
|
3: case i of
|
|
0: result:= 'ANSI_X3.4-1968';
|
|
1: result:= 'iso-ir-6';
|
|
2: result:= 'ANSI_X3.4-1986';
|
|
3: result:= 'ISO_646.irv:1991';
|
|
4: result:= 'ASCII';
|
|
5: result:= 'ISO646-US';
|
|
6: result:= 'US-ASCII';
|
|
7: result:= 'us';
|
|
8: result:= 'IBM367';
|
|
9: result:= 'cp367';
|
|
10: result:= 'csASCII';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
4: case i of
|
|
0: result:= 'ISO_8859-1:1987';
|
|
1: result:= 'iso-ir-100';
|
|
2: result:= 'ISO_8859-1';
|
|
3: result:= 'ISO-8859-1';
|
|
4: result:= 'latin1';
|
|
5: result:= 'l1';
|
|
6: result:= 'IBM819';
|
|
7: result:= 'CP819';
|
|
8: result:= 'csISOLatin1';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
5: case i of
|
|
0: result:= 'ISO_8859-2:1987';
|
|
1: result:= 'iso-ir-101';
|
|
2: result:= 'ISO_8859-2';
|
|
3: result:= 'ISO-8859-2';
|
|
4: result:= 'latin2';
|
|
5: result:= 'l2';
|
|
6: result:= 'csISOLatin2';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
6: case i of
|
|
0: result:= 'ISO_8859-3:1988';
|
|
1: result:= 'iso-ir-109';
|
|
2: result:= 'ISO_8859-3';
|
|
3: result:= 'ISO-8859-3';
|
|
4: result:= 'latin3';
|
|
5: result:= 'l3';
|
|
6: result:= 'csISOLatin3';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
7: case i of
|
|
0: result:= 'ISO_8859-4:1988';
|
|
1: result:= 'iso-ir-110';
|
|
2: result:= 'ISO_8859-4';
|
|
3: result:= 'ISO-8859-4';
|
|
4: result:= 'latin4';
|
|
5: result:= 'l4';
|
|
6: result:= 'csISOLatin4';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
8: case i of
|
|
0: result:= 'ISO_8859-5:1988';
|
|
1: result:= 'iso-ir-144';
|
|
2: result:= 'ISO_8859-5';
|
|
3: result:= 'ISO-8859-5';
|
|
4: result:= 'cyrillic';
|
|
5: result:= 'csISOLatinCyrillic';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
9: case i of
|
|
0: result:= 'ISO_8859-6:1987';
|
|
1: result:= 'iso-ir-127';
|
|
2: result:= 'ISO_8859-6';
|
|
3: result:= 'ISO-8859-6';
|
|
4: result:= 'ECMA-114';
|
|
5: result:= 'ASMO-708';
|
|
6: result:= 'arabic';
|
|
7: result:= 'csISOLatinArabic';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
10: case i of
|
|
0: result:= 'ISO_8859-7:1987';
|
|
1: result:= 'iso-ir-126';
|
|
2: result:= 'ISO_8859-7';
|
|
3: result:= 'ISO-8859-7';
|
|
4: result:= 'ELOT_928';
|
|
5: result:= 'ECMA-118';
|
|
6: result:= 'greek';
|
|
7: result:= 'greek8';
|
|
8: result:= 'csISOLatinGreek';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
11: case i of
|
|
0: result:= 'ISO_8859-8:1988';
|
|
1: result:= 'iso-ir-138';
|
|
2: result:= 'ISO_8859-8';
|
|
3: result:= 'ISO-8859-8';
|
|
4: result:= 'hebrew';
|
|
5: result:= 'csISOLatinHebrew';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
12: case i of
|
|
0: result:= 'ISO_8859-9:1989';
|
|
1: result:= 'iso-ir-148';
|
|
2: result:= 'ISO_8859-9';
|
|
3: result:= 'ISO-8859-9';
|
|
4: result:= 'latin5';
|
|
5: result:= 'l5';
|
|
6: result:= 'csISOLatin5';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
13: case i of
|
|
0: result:= 'ISO_8859-10';
|
|
1: result:= 'iso-ir-157';
|
|
2: result:= 'l6';
|
|
3: result:= 'ISO-8859-10:1992';
|
|
4: result:= 'csISOLatin6';
|
|
5: result:= 'latin6';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
14: case i of
|
|
0: result:= 'ISO_6937-2-add';
|
|
1: result:= 'iso-ir-142';
|
|
2: result:= 'csISOTextComm';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
15: case i of
|
|
0: result:= 'JIS_X0201';
|
|
1: result:= 'X0201';
|
|
2: result:= 'csHalfWidthKatakana';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
16: case i of
|
|
0: result:= 'JIS_Encoding';
|
|
1: result:= 'csJISEncoding';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
17: case i of
|
|
0: result:= 'Shift_JIS';
|
|
1: result:= 'MS_Kanji';
|
|
2: result:= 'csShiftJIS';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
18: case i of
|
|
0: result:= 'Extended_UNIX_Code_Packed_Format_for_Japanese';
|
|
1: result:= 'csEUCPPkdFmtJapanese';
|
|
2: result:= 'EUC-JP';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
19: case i of
|
|
0: result:= 'Extended_UNIX_Code_Fixed_Width_for_Japanese';
|
|
1: result:= 'csEUCFixWidJapanese';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
20: case i of
|
|
0: result:= 'BS_4730';
|
|
1: result:= 'iso-ir-4';
|
|
2: result:= 'ISO646-GB';
|
|
3: result:= 'gb';
|
|
4: result:= 'uk';
|
|
5: result:= 'csISO4UnitedKingdom';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
21: case i of
|
|
0: result:= 'SEN_850200_C';
|
|
1: result:= 'iso-ir-11';
|
|
2: result:= 'ISO646-SE2';
|
|
3: result:= 'se2';
|
|
4: result:= 'csISO11SwedishForNames';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
22: case i of
|
|
0: result:= 'IT';
|
|
1: result:= 'iso-ir-15';
|
|
2: result:= 'ISO646-IT';
|
|
3: result:= 'csISO15Italian';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
23: case i of
|
|
0: result:= 'ES';
|
|
1: result:= 'iso-ir-17';
|
|
2: result:= 'ISO646-ES';
|
|
3: result:= 'csISO17Spanish';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
24: case i of
|
|
0: result:= 'DIN_66003';
|
|
1: result:= 'iso-ir-21';
|
|
2: result:= 'de';
|
|
3: result:= 'ISO646-DE';
|
|
4: result:= 'csISO21German';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
25: case i of
|
|
0: result:= 'NS_4551-1';
|
|
1: result:= 'iso-ir-60';
|
|
2: result:= 'ISO646-NO';
|
|
3: result:= 'no';
|
|
4: result:= 'csISO60Danish-Norwegian';
|
|
5: result:= 'csISO60Norwegian1';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
26: case i of
|
|
0: result:= 'NF_Z_62-010';
|
|
1: result:= 'iso-ir-69';
|
|
2: result:= 'ISO646-FR';
|
|
3: result:= 'fr';
|
|
4: result:= 'csISO69French';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
27: case i of
|
|
0: result:= 'ISO-10646-UTF-1';
|
|
1: result:= 'csISO10646UTF1';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
28: case i of
|
|
0: result:= 'ISO_646.basic:1983';
|
|
1: result:= 'ref';
|
|
2: result:= 'csISO646basic1983';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
29: case i of
|
|
0: result:= 'INVARIANT';
|
|
1: result:= 'csINVARIANT';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
30: case i of
|
|
0: result:= 'ISO_646.irv:1983';
|
|
1: result:= 'iso-ir-2';
|
|
2: result:= 'irv';
|
|
3: result:= 'csISO2Int1RefVersion';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
31: case i of
|
|
0: result:= 'NATS-SEFI';
|
|
1: result:= 'iso-ir-8-1';
|
|
2: result:= 'csNATSSEFI';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
32: case i of
|
|
0: result:= 'NATS-SEFI-ADD';
|
|
1: result:= 'iso-ir-8-2';
|
|
2: result:= 'csNATSSEFIADD';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
33: case i of
|
|
0: result:= 'NATS-DANO';
|
|
1: result:= 'iso-ir-9-1';
|
|
2: result:= 'csNATSDANO';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
34: case i of
|
|
0: result:= 'NATS-DANO-ADD';
|
|
1: result:= 'iso-ir-9-2';
|
|
2: result:= 'csNATSDANOADD';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
35: case i of
|
|
0: result:= 'SEN_850200_B';
|
|
1: result:= 'iso-ir-10';
|
|
2: result:= 'FI';
|
|
3: result:= 'ISO646-FI';
|
|
4: result:= 'ISO646-SE';
|
|
5: result:= 'se';
|
|
6: result:= 'csISO10Swedish';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
36: case i of
|
|
0: result:= 'KS_C_5601-1987';
|
|
1: result:= 'iso-ir-149';
|
|
2: result:= 'KS_C_5601-1989';
|
|
3: result:= 'KSC_5601';
|
|
4: result:= 'korean';
|
|
5: result:= 'csKSC56011987';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
37: case i of
|
|
0: result:= 'ISO-2022-KR';
|
|
1: result:= 'csISO2022KR';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
38: case i of
|
|
0: result:= 'EUC-KR';
|
|
1: result:= 'csEUCKR';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
39: case i of
|
|
0: result:= 'ISO-2022-JP';
|
|
1: result:= 'csISO2022JP';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
40: case i of
|
|
0: result:= 'ISO-2022-JP-2';
|
|
1: result:= 'csISO2022JP2';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
41: case i of
|
|
0: result:= 'JIS_C6220-1969-jp';
|
|
1: result:= 'JIS_C6220-1969';
|
|
2: result:= 'iso-ir-13';
|
|
3: result:= 'katakana';
|
|
4: result:= 'x0201-7';
|
|
5: result:= 'csISO13JISC6220jp';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
42: case i of
|
|
0: result:= 'JIS_C6220-1969-ro';
|
|
1: result:= 'iso-ir-14';
|
|
2: result:= 'jp';
|
|
3: result:= 'ISO646-JP';
|
|
4: result:= 'csISO14JISC6220ro';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
43: case i of
|
|
0: result:= 'PT';
|
|
1: result:= 'iso-ir-16';
|
|
2: result:= 'ISO646-PT';
|
|
3: result:= 'csISO16Portuguese';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
44: case i of
|
|
0: result:= 'greek7-old';
|
|
1: result:= 'iso-ir-18';
|
|
2: result:= 'csISO18Greek7Old';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
45: case i of
|
|
0: result:= 'latin-greek';
|
|
1: result:= 'iso-ir-19';
|
|
2: result:= 'csISO19LatinGreek';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
46: case i of
|
|
0: result:= 'NF_Z_62-010_(1973)';
|
|
1: result:= 'iso-ir-25';
|
|
2: result:= 'ISO646-FR1';
|
|
3: result:= 'csISO25French';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
47: case i of
|
|
0: result:= 'Latin-greek-1';
|
|
1: result:= 'iso-ir-27';
|
|
2: result:= 'csISO27LatinGreek1';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
48: case i of
|
|
0: result:= 'ISO_5427';
|
|
1: result:= 'iso-ir-37';
|
|
2: result:= 'csISO5427Cyrillic';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
49: case i of
|
|
0: result:= 'JIS_C6226-1978';
|
|
1: result:= 'iso-ir-42';
|
|
2: result:= 'csISO42JISC62261978';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
50: case i of
|
|
0: result:= 'BS_viewdata';
|
|
1: result:= 'iso-ir-47';
|
|
2: result:= 'csISO47BSViewdata';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
51: case i of
|
|
0: result:= 'INIS';
|
|
1: result:= 'iso-ir-49';
|
|
2: result:= 'csISO49INIS';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
52: case i of
|
|
0: result:= 'INIS-8';
|
|
1: result:= 'iso-ir-50';
|
|
2: result:= 'csISO50INIS8';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
53: case i of
|
|
0: result:= 'INIS-cyrillic';
|
|
1: result:= 'iso-ir-51';
|
|
2: result:= 'csISO51INISCyrillic';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
54: case i of
|
|
0: result:= 'ISO_5427:1981';
|
|
1: result:= 'iso-ir-54';
|
|
2: result:= 'ISO5427Cyrillic1981';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
55: case i of
|
|
0: result:= 'ISO_5428:1980';
|
|
1: result:= 'iso-ir-55';
|
|
2: result:= 'csISO5428Greek';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
56: case i of
|
|
0: result:= 'GB_1988-80';
|
|
1: result:= 'iso-ir-57';
|
|
2: result:= 'cn';
|
|
3: result:= 'ISO646-CN';
|
|
4: result:= 'csISO57GB1988';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
57: case i of
|
|
0: result:= 'GB_2312-80';
|
|
1: result:= 'iso-ir-58';
|
|
2: result:= 'chinese';
|
|
3: result:= 'csISO58GB231280';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
58: case i of
|
|
0: result:= 'NS_4551-2';
|
|
1: result:= 'ISO646-NO2';
|
|
2: result:= 'iso-ir-61';
|
|
3: result:= 'no2';
|
|
4: result:= 'csISO61Norwegian2';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
59: case i of
|
|
0: result:= 'videotex-suppl';
|
|
1: result:= 'iso-ir-70';
|
|
2: result:= 'csISO70VideotexSupp1';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
60: case i of
|
|
0: result:= 'PT2';
|
|
1: result:= 'iso-ir-84';
|
|
2: result:= 'ISO646-PT2';
|
|
3: result:= 'csISO84Portuguese2';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
61: case i of
|
|
0: result:= 'ES2';
|
|
1: result:= 'iso-ir-85';
|
|
2: result:= 'ISO646-ES2';
|
|
3: result:= 'csISO85Spanish2';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
62: case i of
|
|
0: result:= 'MSZ_7795.3';
|
|
1: result:= 'iso-ir-86';
|
|
2: result:= 'ISO646-HU';
|
|
3: result:= 'hu';
|
|
4: result:= 'csISO86Hungarian';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
63: case i of
|
|
0: result:= 'JIS_C6226-1983';
|
|
1: result:= 'iso-ir-87';
|
|
2: result:= 'x0208';
|
|
3: result:= 'JIS_X0208-1983';
|
|
4: result:= 'csISO87JISX0208';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
64: case i of
|
|
0: result:= 'greek7';
|
|
1: result:= 'iso-ir-88';
|
|
2: result:= 'csISO88Greek7';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
65: case i of
|
|
0: result:= 'ASMO_449';
|
|
1: result:= 'ISO_9036';
|
|
2: result:= 'arabic7';
|
|
3: result:= 'iso-ir-89';
|
|
4: result:= 'csISO89ASMO449';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
66: case i of
|
|
0: result:= 'iso-ir-90';
|
|
1: result:= 'csISO90';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
67: case i of
|
|
0: result:= 'JIS_C6229-1984-a';
|
|
1: result:= 'iso-ir-91';
|
|
2: result:= 'jp-ocr-a';
|
|
3: result:= 'csISO91JISC62291984a';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
68: case i of
|
|
0: result:= 'JIS_C6229-1984-b';
|
|
1: result:= 'iso-ir-92';
|
|
2: result:= 'ISO646-JP-OCR-B';
|
|
3: result:= 'jp-ocr-b';
|
|
4: result:= 'csISO92JISC62291984b';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
69: case i of
|
|
0: result:= 'JIS_C6229-1984-b-add';
|
|
1: result:= 'iso-ir-93';
|
|
2: result:= 'jp-ocr-b-add';
|
|
3: result:= 'csISO93JISC62291984badd';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
70: case i of
|
|
0: result:= 'JIS_C6229-1984-hand';
|
|
1: result:= 'iso-ir-94';
|
|
2: result:= 'jp-ocr-hand';
|
|
3: result:= 'csISO94JISC62291984hand';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
71: case i of
|
|
0: result:= 'JIS_C6229-1984-hand-add';
|
|
1: result:= 'iso-ir-95';
|
|
2: result:= 'jp-ocr-hand-add';
|
|
3: result:= 'csISO95JISC62291984handadd';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
72: case i of
|
|
0: result:= 'JIS_C6229-1984-kana';
|
|
1: result:= 'iso-ir-96';
|
|
2: result:= 'jp-ocr-hand';
|
|
3: result:= 'csISO96JISC62291984kana';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
73: case i of
|
|
0: result:= 'ISO_2033-1983';
|
|
1: result:= 'iso-ir-98';
|
|
2: result:= 'e13b';
|
|
3: result:= 'csISO2033';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
74: case i of
|
|
0: result:= 'ANSI_X3.110-1983';
|
|
1: result:= 'iso-ir-99';
|
|
2: result:= 'CSA_T500-1983';
|
|
3: result:= 'NAPLPS';
|
|
4: result:= 'csISO99NAPLPS';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
75: case i of
|
|
0: result:= 'T.61-7bit';
|
|
1: result:= 'iso-ir-102';
|
|
2: result:= 'csISO102T617bit';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
76: case i of
|
|
0: result:= 'T.61-8bit';
|
|
1: result:= 'T.61';
|
|
2: result:= 'iso-ir-103';
|
|
3: result:= 'csISO103T618bit';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
77: case i of
|
|
0: result:= 'ECMA-cyrillic';
|
|
1: result:= 'iso-ir-111';
|
|
2: result:= 'csISO111ECMACyrillic';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
78: case i of
|
|
0: result:= 'CSA_Z243.4-1985-1';
|
|
1: result:= 'iso-ir-121';
|
|
2: result:= 'ISO646-CA';
|
|
3: result:= 'csa7-1';
|
|
4: result:= 'ca';
|
|
5: result:= 'csISO121Canadian1';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
79: case i of
|
|
0: result:= 'CSA_Z243.4-1985-2';
|
|
1: result:= 'iso-ir-122';
|
|
2: result:= 'ISO646-CA2';
|
|
3: result:= 'csa7-2';
|
|
4: result:= 'csISO122Canadian2';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
80: case i of
|
|
0: result:= 'CSA_Z243.4-1985-gr';
|
|
1: result:= 'iso-ir-123';
|
|
2: result:= 'csISO123CSAZ24341985gr';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
81: case i of
|
|
0: result:= 'ISO_8859-6-E';
|
|
1: result:= 'csISO88596E';
|
|
2: result:= 'ISO-8859-6-E';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
82: case i of
|
|
0: result:= 'ISO_8859-6-I';
|
|
1: result:= 'csISO88596I';
|
|
2: result:= 'ISO-8859-6-I';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
83: case i of
|
|
0: result:= 'T.101-G2';
|
|
1: result:= 'iso-ir-128';
|
|
2: result:= 'csISO128T101G2';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
84: case i of
|
|
0: result:= 'ISO_8859-8-E';
|
|
1: result:= 'csISO88598E';
|
|
2: result:= 'ISO-8859-8-E';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
85: case i of
|
|
0: result:= 'ISO_8859-8-I';
|
|
1: result:= 'csISO88598I';
|
|
2: result:= 'ISO-8859-8-I';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
86: case i of
|
|
0: result:= 'CSN_369103';
|
|
1: result:= 'iso-ir-139';
|
|
2: result:= 'csISO139CSN369103';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
87: case i of
|
|
0: result:= 'JUS_I.B1.002';
|
|
1: result:= 'iso-ir-141';
|
|
2: result:= 'ISO646-YU';
|
|
3: result:= 'js';
|
|
4: result:= 'yu';
|
|
5: result:= 'csISO141JUSIB1002';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
88: case i of
|
|
0: result:= 'IEC_P27-1';
|
|
1: result:= 'iso-ir-143';
|
|
2: result:= 'csISO143IECP271';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
89: case i of
|
|
0: result:= 'JUS_I.B1.003-serb';
|
|
1: result:= 'iso-ir-146';
|
|
2: result:= 'serbian';
|
|
3: result:= 'csISO146Serbian';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
90: case i of
|
|
0: result:= 'JUS_I.B1.003-mac';
|
|
1: result:= 'macedonian';
|
|
2: result:= 'iso-ir-147';
|
|
3: result:= 'csISO147Macedonian';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
91: case i of
|
|
0: result:= 'greek-ccitt';
|
|
1: result:= 'iso-ir-150';
|
|
2: result:= 'csISO150';
|
|
3: result:= 'csISO150GreekCCITT';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
92: case i of
|
|
0: result:= 'NC_NC00-10:81';
|
|
1: result:= 'cuba';
|
|
2: result:= 'iso-ir-151';
|
|
3: result:= 'ISO646-CU';
|
|
4: result:= 'csISO151Cuba';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
93: case i of
|
|
0: result:= 'ISO_6937-2-25';
|
|
1: result:= 'iso-ir-152';
|
|
2: result:= 'csISO6937Add';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
94: case i of
|
|
0: result:= 'GOST_19768-74';
|
|
1: result:= 'ST_SEV_358-88';
|
|
2: result:= 'iso-ir-153';
|
|
3: result:= 'csISO153GOST1976874';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
95: case i of
|
|
0: result:= 'ISO_8859-supp';
|
|
1: result:= 'iso-ir-154';
|
|
2: result:= 'latin1-2-5';
|
|
3: result:= 'csISO8859Supp';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
96: case i of
|
|
0: result:= 'ISO_10367-box';
|
|
1: result:= 'iso-ir-155';
|
|
2: result:= 'csISO10367Box';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
97: case i of
|
|
0: result:= 'latin-lap';
|
|
1: result:= 'lap';
|
|
2: result:= 'iso-ir-158';
|
|
3: result:= 'csISO158Lap';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
98: case i of
|
|
0: result:= 'JIS_X0212-1990';
|
|
1: result:= 'x0212';
|
|
2: result:= 'iso-ir-159';
|
|
3: result:= 'csISO159JISX02121990';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
99: case i of
|
|
0: result:= 'DS_2089';
|
|
1: result:= 'DS2089';
|
|
2: result:= 'ISO646-DK';
|
|
3: result:= 'dk';
|
|
4: result:= 'csISO646Danish';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
100: case i of
|
|
0: result:= 'us-dk';
|
|
1: result:= 'csUSDK';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
101: case i of
|
|
0: result:= 'dk-us';
|
|
1: result:= 'csDKUS';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
102: case i of
|
|
0: result:= 'KSC5636';
|
|
1: result:= 'ISO646-KR';
|
|
2: result:= 'csKSC5636';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
103: case i of
|
|
0: result:= 'UNICODE-1-1-UTF-7';
|
|
1: result:= 'csUnicode11UTF7';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
104: case i of
|
|
0: result:= 'ISO-2022-CN';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
105: case i of
|
|
0: result:= 'ISO-2022-CN-EXT';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
106: case i of
|
|
0: result:= 'UTF-8';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
109: case i of
|
|
0: result:= 'ISO-8859-13';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
110: case i of
|
|
0: result:= 'ISO-8859-14';
|
|
1: result:= 'iso-ir-199';
|
|
2: result:= 'ISO_8859-14:1998';
|
|
3: result:= 'ISO_8859-14';
|
|
4: result:= 'latin8';
|
|
5: result:= 'iso-celtic';
|
|
6: result:= 'l8';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
111: case i of
|
|
0: result:= 'ISO-8859-15';
|
|
1: result:= 'ISO_8869-15';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
112: case i of
|
|
0: result:= 'ISO-8859-16';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
1000: case i of
|
|
0: result:= 'ISO-10646-UCS-2';
|
|
1: result:= 'csUnicode';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
1001: case i of
|
|
0: result:= 'ISO-10646-UCS-4';
|
|
1: result:= 'csUCS4';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
1002: case i of
|
|
0: result:= 'ISO-10646-UCS-Basic';
|
|
1: result:= 'csUnicodeASCII';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
1003: case i of
|
|
0: result:= 'ISO-10646-Unicode-Latin1';
|
|
1: result:= 'csUnicodeLatin1';
|
|
2: result:= 'ISO-10646';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
1004: case i of
|
|
0: result:= 'ISO-10646-J-1';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
1005: case i of
|
|
0: result:= 'ISO-Unicode-IBM-1261';
|
|
1: result:= 'csUnicodeIBM1261';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
1006: case i of
|
|
0: result:= 'ISO-Unicode-IBM-1268';
|
|
1: result:= 'csUnicodeIBM1268';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
1007: case i of
|
|
0: result:= 'ISO-Unicode-IBM-1276';
|
|
1: result:= 'csUnicodeIBM1276';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
1008: case i of
|
|
0: result:= 'ISO-Unicode-IBM-1264';
|
|
1: result:= 'csUnicodeIBM1264';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
1009: case i of
|
|
0: result:= 'ISO-Unicode-IBM-1265';
|
|
1: result:= 'csUnicodeIBM1265';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
1010: case i of
|
|
0: result:= 'UNICODE-1-1';
|
|
1: result:= 'csUnicode11';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
1011: case i of
|
|
0: result:= 'SCSU';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
1012: case i of
|
|
0: result:= 'UTF-7';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
1013: case i of
|
|
0: result:= 'UTF-16BE';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
1014: case i of
|
|
0: result:= 'UTF-16LE';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
1015: case i of
|
|
0: result:= 'UTF-16';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2000: case i of
|
|
0: result:= 'ISO-8859-1-Windows-3.0-Latin-1';
|
|
1: result:= 'csWindows30Latin1';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2001: case i of
|
|
0: result:= 'ISO-8859-1-Windows-3.1-Latin-1';
|
|
1: result:= 'csWindows31Latin1';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2002: case i of
|
|
0: result:= 'ISO-8859-2-Windows-Latin-2';
|
|
1: result:= 'csWindows31Latin2';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2003: case i of
|
|
0: result:= 'ISO-8859-9-Windows-Latin-5';
|
|
1: result:= 'csWindows31Latin5';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2004: case i of
|
|
0: result:= 'hp-roman8';
|
|
1: result:= 'roman8';
|
|
2: result:= 'r8';
|
|
3: result:= 'csHPRoman8';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2005: case i of
|
|
0: result:= 'Adobe-Standard-Encoding';
|
|
1: result:= 'csAdobeStandardEncoding';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2006: case i of
|
|
0: result:= 'Ventura-US';
|
|
1: result:= 'csVenturaUS';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2007: case i of
|
|
0: result:= 'Ventura-International';
|
|
1: result:= 'csVenturaInternational';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2008: case i of
|
|
0: result:= 'DEC-MCS';
|
|
1: result:= 'dec';
|
|
2: result:= 'csDECMCS';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2009: case i of
|
|
0: result:= 'IBM850';
|
|
1: result:= 'cp850';
|
|
2: result:= '850';
|
|
3: result:= 'csPC850Multilingual';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2010: case i of
|
|
0: result:= 'IBM852';
|
|
1: result:= 'cp852';
|
|
2: result:= '852';
|
|
3: result:= 'csPCp852';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2011: case i of
|
|
0: result:= 'IBM437';
|
|
1: result:= 'cp437';
|
|
2: result:= '437';
|
|
3: result:= 'csPC8CodePage437';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2012: case i of
|
|
0: result:= 'PC8-Danish-Norwegian';
|
|
1: result:= 'csPC8DanishNorwegian';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2013: case i of
|
|
0: result:= 'IBM862';
|
|
1: result:= 'cp862';
|
|
2: result:= '862';
|
|
3: result:= 'csPC862LatinHebrew';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2014: case i of
|
|
0: result:= 'PC8-Turkish';
|
|
1: result:= 'csPC8Turkish';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2015: case i of
|
|
0: result:= 'IBM-Symbols';
|
|
1: result:= 'csIBMSymbols';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2016: case i of
|
|
0: result:= 'IBM-Thai';
|
|
1: result:= 'csIBMThai';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2017: case i of
|
|
0: result:= 'HP-Legal';
|
|
1: result:= 'csHPLegal';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2018: case i of
|
|
0: result:= 'HP-Pi-font';
|
|
1: result:= 'csHPPiFont';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2019: case i of
|
|
0: result:= 'HP-Math8';
|
|
1: result:= 'csHPMath8';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2020: case i of
|
|
0: result:= 'Adobe-Symbol-Encoding';
|
|
1: result:= 'csHPPSMath';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2021: case i of
|
|
0: result:= 'HP-DeskTop';
|
|
1: result:= 'csHPDesktop';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2022: case i of
|
|
0: result:= 'Ventura-Math';
|
|
1: result:= 'csVenturaMath';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2023: case i of
|
|
0: result:= 'Microsoft-Publishing';
|
|
1: result:= 'csMicrosoftPublishing';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2024: case i of
|
|
0: result:= 'Windows-31J';
|
|
1: result:= 'csWindows31J';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2025: case i of
|
|
0: result:= 'GB2312';
|
|
1: result:= 'csGB2312';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2026: case i of
|
|
0: result:= 'Big5';
|
|
1: result:= 'csBig5';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2027: case i of
|
|
0: result:= 'macintosh';
|
|
1: result:= 'mac';
|
|
2: result:= 'csMacintosh';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2028: case i of
|
|
0: result:= 'IBM037';
|
|
1: result:= 'cp037';
|
|
2: result:= 'ebcdic-cp-us';
|
|
3: result:= 'ebcdic-cp-ca';
|
|
4: result:= 'ebcdic-cp-wt';
|
|
5: result:= 'ebcdic-cp-nl';
|
|
6: result:= 'csIBM037';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2029: case i of
|
|
0: result:= 'IBM038';
|
|
1: result:= 'EBCDIC-INT';
|
|
2: result:= 'cp038';
|
|
3: result:= 'csIBM038';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2030: case i of
|
|
0: result:= 'IBM273';
|
|
1: result:= 'CP273';
|
|
2: result:= 'csIBM273';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2031: case i of
|
|
0: result:= 'IBM274';
|
|
1: result:= 'EBCDIC-BE';
|
|
2: result:= 'CP274';
|
|
3: result:= 'csIBM274';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2032: case i of
|
|
0: result:= 'IBM275';
|
|
1: result:= 'EBCDIC-BR';
|
|
2: result:= 'cp275';
|
|
3: result:= 'csIBM275';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2033: case i of
|
|
0: result:= 'IBM277';
|
|
1: result:= 'EBCDIC-CP-DK';
|
|
2: result:= 'EBCDIC-CP-NO';
|
|
3: result:= 'csIBM277';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2034: case i of
|
|
0: result:= 'IBM278';
|
|
1: result:= 'CP278';
|
|
2: result:= 'ebcdic-cp-fi';
|
|
3: result:= 'ebcdic-cp-se';
|
|
4: result:= 'csIBM278';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2035: case i of
|
|
0: result:= 'IBM280';
|
|
1: result:= 'CP280';
|
|
2: result:= 'ebcdic-cp-it';
|
|
3: result:= 'csIBM280';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2036: case i of
|
|
0: result:= 'IBM281';
|
|
1: result:= 'EBCDIC-JP-E';
|
|
2: result:= 'cp281';
|
|
3: result:= 'csIBM281';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2037: case i of
|
|
0: result:= 'IBM284';
|
|
1: result:= 'CP284';
|
|
2: result:= 'ebcdic-cp-es';
|
|
3: result:= 'csIBM284';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2038: case i of
|
|
0: result:= 'IBM285';
|
|
1: result:= 'CP285';
|
|
2: result:= 'ebcdic-cp-gb';
|
|
3: result:= 'csIBM285';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2039: case i of
|
|
0: result:= 'IBM290';
|
|
1: result:= 'cp290';
|
|
2: result:= 'EBCDIC-JP-kana';
|
|
3: result:= 'csIBM290';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2040: case i of
|
|
0: result:= 'IBM297';
|
|
1: result:= 'cp297';
|
|
2: result:= 'ebcdic-cp-fr';
|
|
3: result:= 'csIBM297';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2041: case i of
|
|
0: result:= 'IBM420';
|
|
1: result:= 'cp420';
|
|
2: result:= 'ebcdic-cp-ar1';
|
|
3: result:= 'csIBM420';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2042: case i of
|
|
0: result:= 'IBM423';
|
|
1: result:= 'cp423';
|
|
2: result:= 'ebcdic-cp-gr';
|
|
3: result:= 'csIBM423';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2043: case i of
|
|
0: result:= 'IBM424';
|
|
1: result:= 'cp424';
|
|
2: result:= 'ebcdic-cp-he';
|
|
3: result:= 'csIBM424';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2044: case i of
|
|
0: result:= 'IBM500';
|
|
1: result:= 'CP500';
|
|
2: result:= 'ebcdic-cp-be';
|
|
3: result:= 'ebcdic-cp-ch';
|
|
4: result:= 'csIBM500';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2045: case i of
|
|
0: result:= 'IBM851';
|
|
1: result:= 'cp851';
|
|
2: result:= '851';
|
|
3: result:= 'csIBM851';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2046: case i of
|
|
0: result:= 'IBM855';
|
|
1: result:= 'cp855';
|
|
2: result:= '855';
|
|
3: result:= 'csIBM855';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2047: case i of
|
|
0: result:= 'IBM857';
|
|
1: result:= 'cp857';
|
|
2: result:= '857';
|
|
3: result:= 'csIBM857';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2048: case i of
|
|
0: result:= 'IBM860';
|
|
1: result:= 'cp860';
|
|
2: result:= '860';
|
|
3: result:= 'csIBM860';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2049: case i of
|
|
0: result:= 'IBM861';
|
|
1: result:= 'cp861';
|
|
2: result:= '861';
|
|
3: result:= 'cp-is';
|
|
4: result:= 'csIBM861';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2050: case i of
|
|
0: result:= 'IBM863';
|
|
1: result:= 'cp863';
|
|
2: result:= '863';
|
|
3: result:= 'csIBM863';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2051: case i of
|
|
0: result:= 'IBM864';
|
|
1: result:= 'cp864';
|
|
2: result:= 'csIBM864';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2052: case i of
|
|
0: result:= 'IBM865';
|
|
1: result:= 'cp865';
|
|
2: result:= '865';
|
|
3: result:= 'csIBM865';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2053: case i of
|
|
0: result:= 'IBM868';
|
|
1: result:= 'CP868';
|
|
2: result:= 'cp-ar';
|
|
3: result:= 'csIBM868';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2054: case i of
|
|
0: result:= 'IBM869';
|
|
1: result:= 'cp869';
|
|
2: result:= '869';
|
|
3: result:= 'cp-gr';
|
|
4: result:= 'csIBM869';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2055: case i of
|
|
0: result:= 'IBM870';
|
|
1: result:= 'CP870';
|
|
2: result:= 'ebcdic-cp-roece';
|
|
3: result:= 'ebcdic-cp-yu';
|
|
4: result:= 'csIBM870';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2056: case i of
|
|
0: result:= 'IBM871';
|
|
1: result:= 'CP871';
|
|
2: result:= 'ebcdic-cp-is';
|
|
3: result:= 'csIBM871';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2057: case i of
|
|
0: result:= 'IBM880';
|
|
1: result:= 'cp880';
|
|
2: result:= 'EBCDIC-Cyrillic';
|
|
3: result:= 'csIBM880';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2058: case i of
|
|
0: result:= 'IBM891';
|
|
1: result:= 'cp891';
|
|
2: result:= 'csIBM891';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2059: case i of
|
|
0: result:= 'IBM903';
|
|
1: result:= 'cp903';
|
|
2: result:= 'csIBM903';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2060: case i of
|
|
0: result:= 'IBM904';
|
|
1: result:= 'cp904';
|
|
2: result:= '904';
|
|
3: result:= 'csIBM904';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2061: case i of
|
|
0: result:= 'IBM905';
|
|
1: result:= 'CP905';
|
|
2: result:= 'ebcdic-cp-tr';
|
|
3: result:= 'csIBM905';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2062: case i of
|
|
0: result:= 'IBM918';
|
|
1: result:= 'CP918';
|
|
2: result:= 'ebcdic-cp-ar2';
|
|
3: result:= 'csIBM918';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2063: case i of
|
|
0: result:= 'IBM1026';
|
|
1: result:= 'CP1026';
|
|
2: result:= 'csIBM1026';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2064: case i of
|
|
0: result:= 'EBCDIC-AT-DE';
|
|
1: result:= 'csIBMEBCDICATDE';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2065: case i of
|
|
0: result:= 'EBCDIC-AT-DE-A';
|
|
1: result:= 'csIBMEBCDICATDEA';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2066: case i of
|
|
0: result:= 'EBCDIC-CA-FR';
|
|
1: result:= 'csIBMEBCDICCAFR';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2067: case i of
|
|
0: result:= 'EBCDIC-DK-NO';
|
|
1: result:= 'csIBMEBCDICDKNO';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2068: case i of
|
|
0: result:= 'EBCDIC-DK-NO-A';
|
|
1: result:= 'csIBMEBCDICDKNOA';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2069: case i of
|
|
0: result:= 'EBCDIC-FI-SE';
|
|
1: result:= 'csIBMEBCDICFISE';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2070: case i of
|
|
0: result:= 'EBCDIC-FI-SE-A';
|
|
1: result:= 'csIBMEBCDICFISEA';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2071: case i of
|
|
0: result:= 'EBCDIC-FR';
|
|
1: result:= 'csIBMEBCDICFR';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2072: case i of
|
|
0: result:= 'EBCDIC-IT';
|
|
1: result:= 'csIBMEBCDICIT';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2073: case i of
|
|
0: result:= 'EBCDIC-PT';
|
|
1: result:= 'csIBMEBCDICPT';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2074: case i of
|
|
0: result:= 'EBCDIC-ES';
|
|
1: result:= 'csIBMEBCDICES';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2075: case i of
|
|
0: result:= 'EBCDIC-ES-A';
|
|
1: result:= 'csIBMEBCDICESA';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2076: case i of
|
|
0: result:= 'EBCDIC-ES-S';
|
|
1: result:= 'csIBMEBCDICESS';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2077: case i of
|
|
0: result:= 'EBCDIC-UK';
|
|
1: result:= 'csIBMEBCDICUK';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2078: case i of
|
|
0: result:= 'EBCDIC-US';
|
|
1: result:= 'csIBMEBCDICUS';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2079: case i of
|
|
0: result:= 'UNKNOWN-8BIT';
|
|
1: result:= 'csUnkown8Bit';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2080: case i of
|
|
0: result:= 'MNEMONIC';
|
|
1: result:= 'csMnemonic';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2081: case i of
|
|
0: result:= 'MNEM';
|
|
1: result:= 'csMnem';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2082: case i of
|
|
0: result:= 'VISCII';
|
|
1: result:= 'csVISCII';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2083: case i of
|
|
0: result:= 'VIQR';
|
|
1: result:= 'csVIQR';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2084: case i of
|
|
0: result:= 'KOI8-R';
|
|
1: result:= 'csKOI8R';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2085: case i of
|
|
0: result:= 'HZ-GB-2312';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2086: case i of
|
|
0: result:= 'IBM866';
|
|
1: result:= 'cp866';
|
|
2: result:= '866';
|
|
3: result:= 'csIBM866';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2087: case i of
|
|
0: result:= 'IBM775';
|
|
1: result:= 'cp775';
|
|
2: result:= 'csPC775Baltic';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2088: case i of
|
|
0: result:= 'KOI8-U';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2089: case i of
|
|
0: result:= 'IBM00858';
|
|
1: result:= 'CCSID00858';
|
|
2: result:= 'CP00858';
|
|
3: result:= 'PC-Multilingual-850+euro';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2090: case i of
|
|
0: result:= 'IBM00924';
|
|
1: result:= 'CCSID00924';
|
|
2: result:= 'CP00924';
|
|
3: result:= 'ebcdic-Latin9--euro';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2091: case i of
|
|
0: result:= 'IBM01140';
|
|
1: result:= 'CCSID01140';
|
|
2: result:= 'CP01140';
|
|
3: result:= 'ebcdic-us-37+euro';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2092: case i of
|
|
0: result:= 'IBM01141';
|
|
1: result:= 'CCSID01141';
|
|
2: result:= 'CP01141';
|
|
3: result:= 'ebcdic-de-273+euro';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2093: case i of
|
|
0: result:= 'IBM01142';
|
|
1: result:= 'CCSID01142';
|
|
2: result:= 'CP01142';
|
|
3: result:= 'ebcdic-dk-277+euro';
|
|
4: result:= 'ebcdic-no-277+euro';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2094: case i of
|
|
0: result:= 'IBM01143';
|
|
1: result:= 'CCSID01143';
|
|
2: result:= 'CP01143';
|
|
3: result:= 'ebcdic-fi-278+euro';
|
|
4: result:= 'ebcdic-se-278+euro';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2095: case i of
|
|
0: result:= 'IBM01144';
|
|
1: result:= 'CCSID01144';
|
|
2: result:= 'CP01144';
|
|
3: result:= 'ebcdic-it-280+euro';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2096: case i of
|
|
0: result:= 'IBM01145';
|
|
1: result:= 'CCSID01145';
|
|
2: result:= 'CP01145';
|
|
3: result:= 'ebcdic-es-284+euro';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2097: case i of
|
|
0: result:= 'IBM01146';
|
|
1: result:= 'CCSID01146';
|
|
2: result:= 'CP01146';
|
|
3: result:= 'ebcdic-gb-285+euro';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2098: case i of
|
|
0: result:= 'IBM01147';
|
|
1: result:= 'CCSID01147';
|
|
2: result:= 'CP01147';
|
|
3: result:= 'ebcdic-fr-297+euro';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2099: case i of
|
|
0: result:= 'IBM01148';
|
|
1: result:= 'CCSID01148';
|
|
2: result:= 'CP01148';
|
|
3: result:= 'ebcdic-international-500+euro';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2100: case i of
|
|
0: result:= 'IBM01149';
|
|
1: result:= 'CCSID01149';
|
|
2: result:= 'CP01149';
|
|
3: result:= 'ebcdic-is-871+euro';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2101: case i of
|
|
0: result:= 'Big5-HKSCS';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2250: case i of
|
|
0: result:= 'windows-1250';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2251: case i of
|
|
0: result:= 'windows-1251';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2252: case i of
|
|
0: result:= 'windows-1252';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2253: case i of
|
|
0: result:= 'windows-1253';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2254: case i of
|
|
0: result:= 'windows-1254';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2255: case i of
|
|
0: result:= 'windows-1255';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2256: case i of
|
|
0: result:= 'windows-1256';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2257: case i of
|
|
0: result:= 'windows-1257';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2258: case i of
|
|
0: result:= 'windows-1258';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
2259: case i of
|
|
0: result:= 'TIS-620';
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
end;
|
|
|
|
function TCSMIB.GetAliasCount: integer;
|
|
begin
|
|
case FEnum of
|
|
104..106,109,112,1004,1011..1015,2085,2088,2101,2250..2259: result:= 1;
|
|
16,19,27,29,37..40,66,100..101,103,111,1000..1002,1005..1010,2000..2003,2005..2007,2012,2014..2026,2064..2084: result:= 2;
|
|
14..15,17..18,28,31..34,44..45,47..55,59,64,72,75,77,80..86,88,93,96,102,1003,2008,2027,2030,2051,2058..2059,2063,2087: result:= 3;
|
|
22..23,30,43,46,57,60..61,67,69..71,73,76,89..91,94..95,97..98,2004,2009..2011,2013,2029,2031..2033,2035..2043,2045..2048,2050,2052..2053,2056..2057,2060..2062,2086,2089..2092,2095..2100: result:= 4;
|
|
21,24,26,42,56,58,62..63,65,68,74,79,92,99,2034,2044,2049,2054..2055,2093..2094: result:= 5;
|
|
8,11,13,20,25,36,41,78,87: result:= 6;
|
|
5..7,12,35,110,2028: result:= 7;
|
|
9: result:= 8;
|
|
4,10: result:= 9;
|
|
3: result:= 11;
|
|
else
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
end;
|
|
|
|
function TCSMIB.GetPrfMIMEName: string;
|
|
begin
|
|
case FEnum of
|
|
13,17,37..40,2025..2026,2084: result:= Alias[0];
|
|
18,82,84..85: result:= Alias[2];
|
|
4..12: result:= Alias[3];
|
|
3: result:= Alias[6];
|
|
else
|
|
result:= '';
|
|
end;
|
|
end;
|
|
|
|
function TCSMIB.IsValidEnum(const Value: integer): boolean;
|
|
begin
|
|
case Value of
|
|
3..106,109..112,1000..1015,2000..2101,2250..2259:
|
|
result:= true;
|
|
else
|
|
result:= false;
|
|
end;
|
|
end;
|
|
|
|
procedure TCSMIB.SetEnum(const Value: integer);
|
|
var
|
|
AllowChange: boolean;
|
|
begin
|
|
if IsValidEnum(Value) then begin
|
|
if FEnum = Value then exit;
|
|
AllowChange:= True;
|
|
DoChanging(self,Value,AllowChange);
|
|
if AllowChange then begin
|
|
FEnum:= Value;
|
|
DoChange(self);
|
|
end;
|
|
end else if not IgnoreInvalidEnum then begin
|
|
raise ECSMIBException.Create('Invalid MIB number');
|
|
end;
|
|
end;
|
|
|
|
procedure TCSMIB.SetOnChange(const Value: TNotifyEvent);
|
|
begin
|
|
FOnChange := Value;
|
|
end;
|
|
|
|
procedure TCSMIB.SetOnChanging(const Value: TCSMIBChangingEvent);
|
|
begin
|
|
FOnChanging := Value;
|
|
end;
|
|
|
|
function TCSMIB.SetToAlias(const S: string): boolean;
|
|
var
|
|
i,j,oldEnum: integer;
|
|
begin
|
|
result:= true;
|
|
oldEnum:= Enum;
|
|
for i:= 3 to 106 do begin
|
|
Enum:= i;
|
|
for j:= 0 to pred(AliasCount) do begin
|
|
if CompareText(Alias[j],S) = 0 then exit;
|
|
end;
|
|
end;
|
|
for i:= 109 to 112 do begin
|
|
Enum:= i;
|
|
for j:= 0 to pred(AliasCount) do begin
|
|
if CompareText(Alias[j],S) = 0 then exit;
|
|
end;
|
|
end;
|
|
for i:= 1000 to 1015 do begin
|
|
Enum:= i;
|
|
for j:= 0 to pred(AliasCount) do begin
|
|
if CompareText(Alias[j],S) = 0 then exit;
|
|
end;
|
|
end;
|
|
for i:= 2000 to 2101 do begin
|
|
Enum:= i;
|
|
for j:= 0 to pred(AliasCount) do begin
|
|
if CompareText(Alias[j],S) = 0 then exit;
|
|
end;
|
|
end;
|
|
for i:= 2250 to 2259 do begin
|
|
Enum:= i;
|
|
for j:= 0 to pred(AliasCount) do begin
|
|
if CompareText(Alias[j],S) = 0 then exit;
|
|
end;
|
|
end;
|
|
result:= false;
|
|
Enum:= oldEnum;
|
|
end;
|
|
|
|
end.
|