Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutal *рукалицо* Если прогер считает, что список подключаемых модулей - это мусор, и при добавлении некой новой функции ему лениво подключить модуль с ней - ну, тогда я умываю руки. Если программа содержит, скажем, 100 форм - в каждой из которых так или иначе требуется похожий функционал из этих модулей - в чём смысл вручную прописывать в каждой форме в USES кучу одинакового мусора для каждой формы - который кроме того требуется ещё прописывать в определенном порядке иначе будут несовместимости типов с одинаковыми названиями (такое даже в VCL есть!) из разных модулей? Если можно просто написать USES {$I AllVcl.pas}? Кроме того, в проекте присутствуют переписанные модули Forms.pas, Grids.pas, DBGrids.pas и т. д. - которые теперь используют функционал из других моих модулей - поэтому USES должен быть в строго определённом порядке. Понятно желание упростить себе жизнь, объединить подключение всех модулей единой командой для каждой формы. Правда, есть подозрение, что что-то было сделано не так, не по гайдлайнам, не общепринятым способом так скажем, отсюда и проблемы сейчас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2021, 18:03 |
|
||
|
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
|
|||
|---|---|---|---|
|
#18+
Анна Петровна, Пихать в uses всё что надо, и что не надо - это, конечно, дурная практика. А вот упорядочивать модули в нужном порядке - это имеет смысл, для этого можно и IDE-визард написать (а возможно оно даже уже где-то есть). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2021, 19:48 |
|
||
|
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
|
|||
|---|---|---|---|
|
#18+
Анна Петровна там в AllVcl.pas надо написать {$IFDEF Declared Windows} Windows,{$ENDIF} {$IFDEF Declared Messages} Messages,{$ENDIF} {$IFDEF Declared SysUtils} SysUtils,{$ENDIF} Еще раз - выкиньте свой инклуд и пропишите в каждом модуле требуемый именно этому модулю uses и все. И забудьте о проблеме навсегда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2021, 21:41 |
|
||
|
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Еще раз - выкиньте свой инклуд и пропишите в каждом модуле требуемый именно этому модулю uses и все. И забудьте о проблеме навсегда Да бесполезно убеждать. Что совой об пень, что пнём об сову. Особенно после этого Анна Петровна Кроме того, в проекте присутствуют переписанные модули Forms.pas, Grids.pas, DBGrids.pas и т. д. - которые теперь используют функционал из других моих модулей - поэтому USES должен быть в строго определённом порядке. "Всё прогнило, нужно всю систему менять" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2021, 11:37 |
|
||
|
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
|
|||
|---|---|---|---|
|
#18+
Интересно, а если просто перехватить все функции вывода текста типа DrawTextA и TextOutA и перекодировать в W на лету, то получится поправить хотя бы весь вывод? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2021, 12:41 |
|
||
|
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
|
|||
|---|---|---|---|
|
#18+
avp_, нет. Потому что на вход будут идти смешанные строки: какие-то в UTF-8, какие-то в ANSI. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2021, 16:07 |
|
||
|
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
|
|||
|---|---|---|---|
|
#18+
avp_ Интересно, а если просто перехватить все функции вывода текста типа DrawTextA и TextOutA и перекодировать в W на лету, то получится поправить хотя бы весь вывод? Как я понимаю, вывод текста ещё зависит от используемого шрифта. В общем, надо определиться и желательно использовать во всей программе один шрифт. Потому что с MS Sans Serif одни особенности (и алгоритмы перехвата), с Arial другие, чтобы тексты отображались нормально и т. д. В моем случае во всей программе Arial, RUSSIAN_CHARSET, SetThreadLocale(1049) - но в некоторых местах может оказаться и MS Sans Serif или что-то другое. В общем, как я понимаю, по-нормальному вопрос в рамках Delphi 7 не решается - речь может только вестись о минимизации глюков (и в том, чтобы убедить пользователя отключить злополучную галочку). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2021, 16:39 |
|
||
|
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutal Да бесполезно убеждать. Что совой об пень, что пнём об сову. Особенно после этого Кроме того, в проекте присутствуют переписанные модули Forms.pas, Grids.pas, DBGrids.pas и т. д. - которые теперь используют функционал из других моих модулей - поэтому USES должен быть в строго определённом порядке. "Всё прогнило, нужно всю систему менять" Почему нет - очень даже рассматриваю такой вариант. Причем даже до размещения вопроса на этом форуме. Просто очень не хочется так делать - очень уж удобно и красиво модули сгруппированы в Delphi 7 и никаких проблем. В Delphi 2010, кстати, исходники VCL в комплекте есть если сборка нормальная - тот кто говорил про мою кривую сборку - был прав. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2021, 16:44 |
|
||
|
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
|
|||
|---|---|---|---|
|
#18+
GunSmoker avp_, нет. Потому что на вход будут идти смешанные строки: какие-то в UTF-8, какие-то в ANSI. Разве что если только вне зависимости от исходного формата строки - пытаться распознать строку, в каком она формате и всё равно пытаться выполнять преобразование. А в случае неудачи преобразования - оставлять тот формат, что был. Например, преобразовываем UTF-8 в ANSI а если в процессе преобразования произошла неудача - оставляет результат в ANSI т. к. скорее всего строка и так в ANSI. Конечно, понимаю, что поведение программы в этом случае будет непредсказуемым и некрасивым и вообще за такое надо руки отрывать, разве что использовать такое как вариант - если нужно чтобы отображалось без крякозябр любой ценой, даже ценой потери стабильности программы ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2021, 16:50 |
|
||
|
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
|
|||
|---|---|---|---|
|
#18+
avp_ Интересно, а если просто перехватить все функции вывода текста типа DrawTextA и TextOutA и перекодировать в W на лету, то получится поправить хотя бы весь вывод? Как я понимаю, гораздо надёжнее и стабильнее - перехватывать свойства Text, Caption и прочие у объектов и писать свои наследники стандартных объектов. По мере обнаружения крякозябр в разных местах программы - добавляем перехватчики для разных компонентов и свойств. Например, аналогично Text перехватываем обращения к Hint, аналогично Button перехватывает обращения к Edit и т. д. И разумеется, у всех компонентов указать одинаковый шрифт (например, Arial) и RUSSIAN_CHARSET. Чтобы поведение перехватчиков было не случайным, а предсказуемым. Как мне кажется, это единственный способ обеспечить более-менее стабильную работу программы без перехода на юникодный Delphi (написать такой модуль, который подключать ко всем формам программы в секции INTERFACE после USES всех стандартных VCL-модулей и до USES своих модулей (чтобы они - если работают с VCL - использовали уже новые обёртки)): Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2021, 17:01 |
|
||
|
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
|
|||
|---|---|---|---|
|
#18+
Анна Петровна Как я понимаю, гораздо надёжнее и стабильнее - перехватывать свойства Text, Caption и прочие у объектов и писать свои наследники стандартных объектов. вам непременно нужен ещё один велосипед? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2021, 17:07 |
|
||
|
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
|
|||
|---|---|---|---|
|
#18+
GunSmoker avp_, нет. Потому что на вход будут идти смешанные строки: какие-то в UTF-8, какие-то в ANSI. Откуда? UTF-8 будет мне видится только оттуда где что то вводилось с клавиатуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2021, 17:57 |
|
||
|
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2021, 19:28 |
|
||
|
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
|
|||
|---|---|---|---|
|
#18+
Пара мыслей, может кому пригодится: 1. Давно перешел на хранение настроек в json-файле (если есть такая возможность). Очень удобно. Причем не надо придумывать ничего чтением, записью, преобразованием данных. Очень удобно и наглядно в коде использовать. Компонент JsonDataObjects 2. Был опыт поддержки с кучей форм в двух версиях делфи (2006 и 2009, если правильно помню) -- ничего хорошего не приносило, иногда что-то левое пробиралось в dfm и приходилось вручную чистить-восстанавливать. Вздохнул с облегчением, когда все перешли на обновленную версию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2021, 20:25 |
|
||
|
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий Анна Петровна Как я понимаю, гораздо надёжнее и стабильнее - перехватывать свойства Text, Caption и прочие у объектов и писать свои наследники стандартных объектов. вам непременно нужен ещё один велосипед? Не нужно. Нужно только чтобы тот код, который уже есть - продолжал нормально работать и ни в коем случае не стал хоть на 1% менее стабильным. Хорошо, что пока у большинства пользователей эта опция отключена и вообще многие вообще на Windows 7. С TntComponents если на него переходить стабильность программы может пострадать и у основной категории пользователей да и зачем на них переходить уж лучше сразу тогда наи новую версию Delphi, да и вообще любой компонент в том числе TntComponents это тоже дополнительный костыль, который также затруднит переход на новые версии Delphi в дальнейшнем. Логика тут в том, что у основной массы пользователей всё должно остаться как есть и чтобы не стало хуже. А у тех, у кого опция эта включена - хотя бы основной функционал чтобы работал и если и будут где-то какие-то глюки - то пусть уж лучше они будут только у тех, у кого данная опция включена (а если они будут обращаться в техподдержку - предлагать эту опцию отключить), но не у вообще всех. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2021, 23:12 |
|
||
|
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
|
|||
|---|---|---|---|
|
#18+
JayDi 1. Давно перешел на хранение настроек в json-файле (если есть такая возможность). Очень удобно. Причем не надо придумывать ничего чтением, записью, преобразованием данных. Очень удобно и наглядно в коде использовать. Компонент JsonDataObjects Кажется, еще один сторонний компонент - то есть костыль. Который затруднит переход на новые версии Delphi и дополнительно привяжет к Delphi 7. Как мне кажется, при переходе на новые версии Delphi сам по себе появляется доступ ко многим новым стандартным компонентам - которых нет в Delphi 7 и в новых версиях Delphi придётся изобретать меньше велосипедов, тк в комплекте больше возможностей "из коробки". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2021, 23:16 |
|
||
|
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
|
|||
|---|---|---|---|
|
#18+
Анна Петровна JayDi JsonDataObjects Кажется, еще один сторонний компонент - то есть костыль. Который затруднит переход на новые версии Delphi и дополнительно привяжет к Delphi 7. Как мне кажется, при переходе на новые версии Delphi сам по себе появляется доступ ко многим новым стандартным компонентам - которых нет в Delphi 7 и в новых версиях Delphi придётся изобретать меньше велосипедов, тк в комплекте больше возможностей "из коробки". В делфи 7 вообще ничего нет для работы с JSON (собственно, даже JsonDataObjects работает только с 2009 -- но она как пример дана). Я к тому, что у делфи идет настолько кривая и раздутая JSON-библиотека, что тупо отпугнет любого разработчика, кто захочет с ней работать "ради облегчения" процесса -- в результате они так и сидят на устаревших ini-файлах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2021, 23:21 |
|
||
|
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
|
|||
|---|---|---|---|
|
#18+
JayDi В делфи 7 вообще ничего нет для работы с JSON (собственно, даже JsonDataObjects работает только с 2009 -- но она как пример дана). Я к тому, что у делфи идет настолько кривая и раздутая JSON-библиотека, что тупо отпугнет любого разработчика, кто захочет с ней работать "ради облегчения" процесса -- в результате они так и сидят на устаревших ini-файлах. Использую для распознавания JSON велосипед под названием OLE-объекта MSScriptControl.ScriptControl. Как вариант, можно еще использовать Node.js как внешнюю программу для разбора JSON - вызывая скрипт на Node и возвращая ответ в виде файла. В общем, и так понятно - надо уходить с Delphi 7 - иначе с каждым годом количество вынужденных велосипедов будет расти и проблема велосипедов ещё в том, что зачастую менее эффективны, чем стандартные решения - в итоге дойдет до того, что программа для своей работы будет требовать Intel Core i7, да ещё и работать при этом неспешно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2021, 23:55 |
|
||
|
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
|
|||
|---|---|---|---|
|
#18+
Анна Петровна, вот же вы выдумщица ))) для JSON в D7 есть прекрасный superobject. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2021, 00:10 |
|
||
|
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
|
|||
|---|---|---|---|
|
#18+
Cobalt747 Анна Петровна, вот же вы выдумщица ))) для JSON в D7 есть прекрасный superobject. Еще один сторонний велосипед с GitHub. Неизвестно, кто его делал и неизвестно, как он работает и какие там глюки. Скорее всего, он гораздо эффективнее, чем предлагаемое мной решение. Но вот опасаюсь - если на него, например, завязать много логики в программе, а потом он заглючит - копаться в чужом коде и выяснять причины ошибок это ад для меня по крайней мере. Со своими бы велосипедами разобраться они хоть и с квадратными колёсами, зато обкатаны и работают предсказуемо. А стандартным компонентам и программам вроде Node.js я по умолчанию больше доверяю, чем разным сторонним решениям. Но если конечно - нужна именно скорость и стандартных решений нет, а велосипеды с квадратными колёсами едут слишком медленно - и единственный нормальный вариант использовать стороннее решение - приходится сжав зубы качать и использовать на свой страх и риск. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2021, 00:31 |
|
||
|
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
|
|||
|---|---|---|---|
|
#18+
Кстати, с переходом на Delphi 2010 гадость обнаружилась. Не даёт собака писать длинные процедуры. Выдаёт ошибку E2283 Too many local constants. Use shorter procedures приходится разбивать длинную процедуру на несколько более коротких Конечно я всё понимаю, писать несколько тысяч литералов в одной процедуре это не есть хорошо. Но с другой стороны зачем выдавать ошибку достаточно предупредить, что так делать нехорошо. Чем-то напоминает глупое ограничение еще из Турбо Паскаль - размер кода не должен превышать 64 килобайта. Смешно - но изучая Турбо Паскаль в свой время - столкнулась с этим ограничением (не более 64 Кб кода) буквально на 7-й день изучения. Используя многократно Copy&Paste это совсем даже не удивительно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2021, 00:37 |
|
||
|
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
|
|||
|---|---|---|---|
|
#18+
А ведь говорили Вам, что 2010 - глючная. Но некоторые просто обязаны наступить на грабли лично... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2021, 00:45 |
|
||
|
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
|
|||
|---|---|---|---|
|
#18+
Анна Петровна Но вот опасаюсь - если на него, например, завязать много логики в программе, а потом он заглючит - копаться в чужом коде и выяснять причины ошибок это ад для меня по крайней мере. Они годами отлажены. Обычно, если библиотека "глючит" -- значит в нашем коде было сделано что-то не то. Шанс на ошибку в самой библиотеке минимален. В критическом случае можно либо самостоятельно поправить исходники, либо поискать альтернативы. В свое время так пришлось переехать с SimpleXML на OXml, т.к. первый не поддерживал некоторые специфические конструкции, кодировки и большие объемы. Но сторонняя библиотека НАМНОГО лучшее решение, нежели городить огород со сторонними скриптами (msscript) или сервисами (node.js). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2021, 01:09 |
|
||
|
Крякозябры вместо русских символов на Windows 10 - при включенной опции Юникод
|
|||
|---|---|---|---|
|
#18+
Анна Петровна E2283 Too many local constants. Use shorter procedures ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2021, 01:53 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=40060830&tid=2037376]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
81ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 187ms |

| 0 / 0 |
