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.
RnQ/for.RnQ/EmojiConst.pas

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, Integer>;
singles: array of Word;
implementation
var
key: TPair;
zipres: TResourceStream;
zip: TZipFile;
rawemojis: TMemoryStream;
sl: TStringList;
s: String;
a: TArray;
initialization
emojis := TDictionary, Integer>.Create;
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.Create(StrToInt(a[0]), StrToInt(a[1])), StrToInt(a[2]));
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.