You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.4 KiB
Plaintext
72 lines
1.4 KiB
Plaintext
{
|
|
This file is part of R&Q.
|
|
Under same license
|
|
}
|
|
unit EmojiConst;
|
|
{$I ForRnQConfig.inc}
|
|
{$I NoRTTI.inc}
|
|
|
|
interface
|
|
|
|
uses
|
|
Winapi.Windows, System.SysUtils, System.Classes, Generics.Collections, RnQZip;
|
|
|
|
var
|
|
emojis: TDictionary |
|
singles: array of Word;
|
|
|
|
implementation
|
|
|
|
var
|
|
key: TPair |
|
zipres: TResourceStream;
|
|
zip: TZipFile;
|
|
rawemojis: TMemoryStream;
|
|
sl: TStringList;
|
|
s: String;
|
|
a: TArray |
|
|
|
initialization
|
|
emojis := TDictionary |
|
|
|
zip := TZipFile.Create;
|
|
zipres := TResourceStream.Create(HInstance, 'emojis', RT_RCDATA);
|
|
try
|
|
zipres.Seek(0, soBeginning);
|
|
zip.LoadFromStream(zipres);
|
|
finally
|
|
zipres.Free;
|
|
end;
|
|
|
|
if zip.Count = 0 then
|
|
Exit;
|
|
|
|
rawemojis := TMemoryStream.Create;
|
|
zip.ExtractToStream('emojis', rawemojis);
|
|
zip.Free;
|
|
|
|
sl := TStringList.Create;
|
|
rawemojis.Seek(0, soBeginning);
|
|
sl.LoadFromStream(rawemojis);
|
|
rawemojis.Free;
|
|
|
|
for s in sl do
|
|
begin
|
|
a := s.Split([',']);
|
|
emojis.Add(TPair |
|
end;
|
|
|
|
sl.Free;
|
|
|
|
for key in emojis.Keys do
|
|
if (key.Value = 0) and (key.Key <= $ffff) then
|
|
begin
|
|
SetLength(singles, Length(singles) + 1);
|
|
singles[Length(singles) - 1] := key.Key;
|
|
end;
|
|
|
|
finalization
|
|
emojis.Free;
|
|
|
|
end.
|