Хотя у меня нет решения для добавления поддержки чисел в диапазоне 10 duodecillion +, я хотел бы отметить, что при использовании динамического отображения отправляемая строка цифр сохраняется как text
[117 ] и keyword
тип данных. Таким образом, если вы хотите выполнить сортировку или фильтрацию, вы можете работать с полем keyword
.
Например:
PUT random_big
POST random_big/_doc
{
"num": "10000000000000000000000000000000000000000"
}
POST random_big/_doc
{
"num": "10000000000000000000000000000000000000001"
}
POST random_big/_doc
{
"num": "10000000000000000001000000000000000000000"
}
Проверка отображения (GET random_big/_mapping
) показывает:
{
"random_big" : {
"mappings" : {
"_doc" : {
"properties" : {
"num" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
}
}
}
}
}
}
И сортировка может быть выполнена следующим образом:
GET random_big/_search
{
"sort": [
{
"num.keyword": {
"order": "asc"
}
}
]
}
VarIsClear
функция включает Вашу ситуацию, где тип varDispatch
и значение nil
. Это также включает пустые и "неизвестные" значения и пользовательские различные типы. Я вижу его в своем источнике Delphi 2005; я не знаю, насколько ранее это было включено.
Любопытно, VBA's Nothing
не то же как Unassigned
, Null
или Empty
, таким образом, Вы не можете использовать, например:
// Worksheet is a TExcelWorksheet or OleVariant coupled to an open worksheet
MyRange := Worksheet.Range['MyRangeInTheWorksheet', EmptyParam]
if (MyRange = Null) then // won't work!
MsgBox('The range doesn''t exist!');
Вместо этого используйте эту функцию:
function VarIsNothing(V: OleVariant): Boolean;
begin
Result :=
(TVarData(V).VType = varDispatch)
and
(TVarData(V).VDispatch = nil);
end;
// ...
if (VarIsNothing(MyRange)) then
Обновление
По-видимому, источники единицы RTL Variants.pas
изменились между Delphi 5 и 2007. Согласно @mghie (см. комментарии), функция VarIsEmpty
сделал бы задание в D5. Однако в D2007, это, кажется, больше не имеет место, таким образом, Вам, вероятно, будет нужна вышеупомянутая функция снова.
Кроме того, обратите внимание что VBA's Nothing
вероятно, настоящий особый случай; я не думаю, что каждый встречается с ним слишком часто с автоматизацией.
VarIsEmpty (отличающийся, чем VarIsNull) не делают то, что Вы хотите?