|
v7: Как проверить наличие шрифта с заданным именем в системе?
| ☑ |
0
Chai Nic
27.08.21
✎
18:43
|
Собственно сабж. Нужно перед формированием печатной формы убедиться, что шрифт, который используется, установлен. Если нет - то выдать сообщение пользователю.
Как это сделать максимально просто, без парсинга реестра? Компоненты 1с++ и формекс подключены и используются.
|
|
1
Aleksey
27.08.21
✎
18:54
|
WSH=СоздатьОбъект("WScript.Shell");
Шрифты=WSH.SpecialFolders("Fonts");
|
|
2
Chai Nic
27.08.21
✎
18:55
|
(1) На 2003 и XP будет работать?
|
|
3
Aleksey
27.08.21
✎
18:56
|
Папки со шрифтами по моему еще в 95 была
|
|
4
Базис
naïve
27.08.21
✎
18:56
|
Поищи в конфе по слову "шрифт", вроде некоторые (Бух?) проверяли наличие шрифта для 1D-баркода.
|
|
5
victuan1
30.08.21
✎
07:17
|
(4) Нет, не нашел там того. Ни в самой конфигурации, ни в рег. отчетности.
|
|
6
MWWRuza
гуру
30.08.21
✎
14:54
|
Ничего там не проверялось. В случае отсутствия шрифта, просто выводились "циферки" и восклицательные знаки вместо ШК...
Может это в снеговике проверялось? х.з....
|
|
7
Djelf
30.08.21
✎
15:53
|
(0) А зачем перебором? С 1С++ можно и без перебора.
Функция ЕстьШрифт(ИмяШрифта,ФайлШрифта="")
// ИмяШрифта - так как он называется в реестре
// ФайлШрифта - возвращается в случае его наличия в реестре
Реестр=СоздатьОбъект("РеестрWin");
Если Реестр.ОткрытьКлюч("HKEY_LOCAL_MACHINE","SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts","KEY_QUERY_VALUE")=0 Тогда
Сообщить("Ошибка открытия Реестра Windows","!");
Возврат 0;
КонецЕсли;
Возврат Реестр.ЗапроситьЗначение(ИмяШрифта,ФайлШрифта);
КонецФункции
|
|
8
Tatitutu
30.08.21
✎
17:22
|
Если ФС.СуществуетФайл(фс.windowsКаталог()+"\Fonts\eang000.ttf")=0 Тогда
так не подойдет ?
|
|
9
Chai Nic
31.08.21
✎
08:14
|
(7)(8) Шрифты могут быть установлены и в профиль пользователя. Так что придется проверять ещё и ветку HKCU (ну или папку профиля).
|
|