Имя: Пароль:
1C
1C 7.7
v7: Проверка на наличие установленного шрифта
0 BLP
 
08.05.12
02:02
Подскажите, пожалуйста,
можно ли как-то в модуле проверить в системе установку нужного шрифта,
чтобы написать условие, типа

Если Шрифт (Такой-то) имеется Тогда
ИИИ=ССС
ИНаче
ИИИ=ТТТ
КОнецЕсли
1 Злопчинский
 
08.05.12
02:45
скриптами стопудово можно вытянуть из ОС.
также посмотри в торону формекса - там есть возможность получения шрифта
2 BLP
 
08.05.12
02:48
спс, угу, юзаю формекс, надо глянуть, что там
3 BLP
 
08.05.12
13:15
все как всегда просто... используем ФС.СуществуетФайл()
4 andrewks
 
08.05.12
13:43
ну, как бы одно это не гарантирует.
ещё есть HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts
5 BLP
 
08.05.12
14:19
ну, да... надо знать еще папку.... в висте это c:\windows\fonts
а где в других ОС - может и отличаться от этого пути

А как использовать реестровый регистр?
6 BLP
 
08.05.12
14:21
Моя проблема:
я использую астрологический шрифт, который для лиц мужескаго полу выводит значек Марса, для жен - венеру...
если шрифт отсутствует в системе, то выводится какая-то буква обучного шрифта, что не айс :-))
поэтому и хотелось бы, чтобы если шрифт установлен, то марс или венера, а если нет, то муж или Жен ))
7 Voronve
 
08.05.12
14:44
(6) В конфу (или в обработку, что там у тебя) добавить две небольшие картинки и их выводить не ?
8 Злопчинский
 
08.05.12
16:16
(3) автор не знаеит что наличие файла еще не значит что фонт установлен в системе
9 BLP
 
08.05.12
17:22
автор знает, конечно, ну, это как вариант для начала...
и в моем случае, если не будет установлен, то не будет при такой команде вылазить абракадабра, а будет - муж или жен...
Поэтому и ищу более правильный способ
10 viktor_vv
 
08.05.12
17:30
Это че, 1С уже и до астрологов, магов и чародеев добралась :)?
11 andrewks
 
08.05.12
17:32
(10) не, наоборот, они до неё добрались :)
12 viktor_vv
 
08.05.12
17:47
(11) Ну слава богу, наконец-то появится та самая волшебная кнопка ::).
13 andrewks
 
08.05.12
20:52
(12) сама кнопка появилась уже давно. просто она станет _реально работать_ )))
14 Torquader
 
08.05.12
20:54
Вообще-то,если хочется чего-то узнать о системе,то нужно через wmi спросить у неё - она всё подробно про себя расскажет.
15 Vampire1402
 
09.05.12
11:55
(5) c:\windows\fonts у висты, семерки и хорька одинаковы. Не думаю, что база будет юзаться на яблоке или линуксе. Проблема в основном здесь с разделом (буквой) установки оси - есть такие ... которые умудряются установить ось на D или E разделы. Но и это решаемо.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
В этой ветке есть ключ SystemRoot. Там написан путь системы. Дописали \fonts и получили путь шрифтов.
А дальше, 1С++ есть? Работа с реестром через него.
16 Torquader
 
09.05.12
12:21
(15) Переменная окружения windir или systemroot говорят, где живёт директория Windows - к ней нужно добавить только Fonts.
17 Vampire1402
 
09.05.12
13:28
(16) тоже вариант
18 Torquader
 
09.05.12
13:34
(17) Просто в реестре пути могут поменяться - скоро Windows 8 выйдет.
А вот переменные окружения как-то менять нехорошо, тем более, что они для того и созданы, чтобы процесс мог легко узнать, где находится системная директория без лишних обращений к системе.
Насколько я помню, WScript.Shell позволяет заглянуть в переменные окружения.
sh=CreateObject("WScript.Shell")
Fonts=sh.ExpandEnvironmentStrings("%SYSTEMROOT%")+"\Fonts"
19 Vampire1402
 
09.05.12
18:11
(18) ну на Windows 8 честно говоря не обращал внимания, да и не разглядывал ее пока еще. Хотя и не факт, что в Windows 8 шрифты лежат в "\Fonts".
20 Vampire1402
 
09.05.12
18:18
Может куда проще ФС.WindowsКаталог()
21 Torquader
 
09.05.12
18:21
(20) Можно, только даже наличие файла в указанной директории не гарантирует, что шрифт будет доступен.
P.S. а файл-то и переименовать можно.
22 Vampire1402
 
09.05.12
18:32
(21) Так я про что в (15) и говорил: "А дальше, 1С++ есть? Работа с реестром через него."
23 Torquader
 
09.05.12
18:44
(22) В реестре тоже не факт, что все шрифты перечислены.
Есть кеш шрифтов - вот там должно быть всё.
24 Vampire1402
 
09.05.12
18:59
(23) ну раз в реестре нет шрифта, разве он может быть зарегистрирован?
25 Torquader
 
09.05.12
19:02
Перебрать все шрифты позволяет GDI-функция EnumFontFamilies.
26 Vampire1402
 
09.05.12
19:05
(25) ну, это уже к автору
27 Torquader
 
09.05.12
19:21
(26) Просто эта функция действительно даёт ответ на то, какие шрифты установлены и будут доступны вашему приложению. Как известно, 1С 7.7 - не Unicode приложение, и часть шрифтов может работать не так, как надо.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший