Я KnownFolderPath идентификаторы объявлены consts:Delphi: Const список константных объектов
const
FOLDERID_LocalAppData : TGUID = '{F1B32785-6FBA-4FCF-9D55-7B8E7F157091}';
FOLDERID_RoamingAppData: TGUID = '{3EB685DB-65F9-4CF6-A03A-E3EF65729F3D}';
FOLDERID_Documents : TGUID = '{FDD39AD0-238F-46AF-ADB4-6C85480369C7}';
{...}
Я хочу, чтобы определить упорядоченный список идентификаторов папок во время компиляции. Я знаю, что я могу сделать следующее:
const
settings_roots: array[0..2] of TGuid = (
'{F1B32785-6FBA-4FCF-9D55-7B8E7F157091}',
'{3EB685DB-65F9-4CF6-A03A-E3EF65729F3D}',
'{FDD39AD0-238F-46AF-ADB4-6C85480369C7}'
);
Но это не очень удобно в сопровождении кода, так что я хотел бы, чтобы лучше использовать имена, определенные ранее. Но это дает мне компилятор ошибки в Delphi XE3 (Уст выражение ожидается):
const
settings_roots: array[0..2] of TGuid = (
FOLDERID_LocalAppData, FOLDERID_RoamingAppData, FOLDERID_Documents
);
я мог определить FOLDERIDs как константные строки, как
const
FOLDERID_LocalAppData = '{F1B32785-6FBA-4FCF-9D55-7B8E7F157091}';
FOLDERID_RoamingAppData = '{3EB685DB-65F9-4CF6-A03A-E3EF65729F3D}';
FOLDERID_Documents = '{FDD39AD0-238F-46AF-ADB4-6C85480369C7}';
{...}
, но чем я бы преобразовать идентификаторы с StringToGUID()
everywehere в коде. Разве не удается определить упорядоченный статический/const-список объектов const до выполнения в Delphi?
Я не согласен, что это точный дубликат. Ответчик особенно хочет определить исходные константы как TGUID (а не строку), чтобы он мог использовать их в другом месте в своей программе напрямую, как он утверждает. Эта дополнительная спецификация дает ответы, приведенные в исходном недействительном IMHO. – Dsm
Простое редактирование ответа Ondrej разрешило бы это. Схожая с добавлением, которое я только что сделал для Реми. –