Страница 1 из 1

Если метод называется "Set".

СообщениеДобавлено: 19.08.2015 20:58:07
Виталий
Всем доброго. Понадобилось выполнить сортировку в Libre Office по колонке.
Подобрал следующий код:
Код: Выделить всё
var  range,fields,unoWrap,sortDx:Variant;
begin
range:=Sheet.getCellRangeByName('C2:C135');
fields:=VarArrayCreate([0, 0], varVariant);
fields[0]:=StarOffice.Bridge_GetStruct('com.sun.star.table.TableSortField');
fields[0].Field:=7;
fields[0].IsAscending:=1;
unoWrap:=StarOffice.Bridge_GetValueObject();
unoWrap.Set('[]com.sun.star.table.TableSortField', fields);
sortDx:=range.createSortDescriptor();
sortDx[0].Name = 'ContainsHeader';
sortDx[0].Value = 1;
sortDx[3].Name = 'SortFields';
sortDx[3].Value = unoWrap;
range.sort(sortDx);
end;

Лазарус ругается на unoWrap.Set
unit1.pas(67,10) Fatal: Syntax error, "identifier" expected but "SET" found

Паскаль 2.6.4.
Посоветуйте как убедить Паскаль, что это имя метода а не зарезервированное слово.

Re: Если метод называется "Set".

СообщениеДобавлено: 19.08.2015 21:17:59
kazalex
Виталий писал(а):unoWrap.Set('[]com.sun.star.table.TableSortField', fields);

unoWrap.&Set(...);

Re: Если метод называется "Set".

СообщениеДобавлено: 19.08.2015 22:23:49
Виталий
Любопытно... А откуда такой финт?
Это где-то описано почему так в фришке сделано?

Re: Если метод называется "Set".

СообщениеДобавлено: 19.08.2015 23:00:27
kazalex
Виталий писал(а):Это где-то описано почему так в фришке сделано?

Не знаю как давно (нашёл, в 2.5.1) эта возможность появилось в FPC, но в дельфях оно существует очень давно (в 2006 точно есть, но скорее всего появилась в 2005) и появилась, как раз, для разруливания подобных ситуаций, т.е. когда идентификатор совпадает с ключевым словом. Для FPC написано тут.

Re: Если метод называется "Set".

СообщениеДобавлено: 19.08.2015 23:04:46
Виталий
Вау! Вот уж век учись :)
Никогда не использовал (и не встречал) в именах резервированки, потому сейчас у меня выражение лица типа - :shock:
Спасибо. Все получилось. Сортировка удалась :wink: