Конференция "Прочее" » Ошибка в работе Align на Win10 (полезная инфа)
 
  • Тимохов Дима © (23.05.18 11:38) [0]
    Приветствую!

    1. Проблема решена. Просто я так долго искал решение, что считаю полезным донести его до общественности.

    2. Итак, в чем проблема: сложные формы (с глубокой вложенностью) в Win10 иногда работают неправильно. Либо Align не срабатывает (https://yadi.sk/i/NBVneMzS3WPtsB). Либо контролы рисуются, как будто у них сняли стиль WS_EX_CLIENTEDGE (т.е. нет границы, при этом проверено, что стиль WS_EX_CLIENTEDGE есть).

    3. Изрядно покопавшись в интернете набрел на точно такую же проблему и ее решение.

    Вот вопрос https://stackoverflow.com/questions/1355258/delphi-7-forms-anchors-not-working-in-vista?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa

    Вот исследование проблемы http://news.jrsoftware.org/news/toolbar2000/msg07779.html

    А вот и решение http://cc.embarcadero.com/Item/25646
    Решение предоставлено известным в дельфи сообществе Andreas Hausladen.
  • Eraser © (23.05.18 15:36) [1]

    > Тимохов Дима ©   (23.05.18 11:38) 


    > Итак, в чем проблема

    проблема в том, что у вас для разработки используется ПО 10 летней давности )
  • Тимохов Дима © (23.05.18 15:38) [2]

    > Eraser ©   (23.05.18 15:36) [1]

    полно народу, кто еще на "семерочке" сидит.
  • Kerk © (23.05.18 19:15) [3]

    > проблема в том, что у вас для разработки используется ПО
    > 10 летней давности )

    Обижаешь, 17летней :)
  • KilkennyCat © (23.05.18 21:04) [4]

    > полно народу, кто еще на "семерочке" сидит.

    а в процентах?
  • Тимохов Дима © (23.05.18 23:37) [5]

    > Kerk ©   (23.05.18 19:15) [3]
    > > проблема в том, что у вас для разработки используется
    > ПО
    > > 10 летней давности )
    > Обижаешь, 17летней :)

    У меня D2007. Т.е. 11 лет. "Семерочку" я для примера привел.
    Надо будет проверить, в новых версиях нет ли эффекта.


    > KilkennyCat ©   (23.05.18 21:04) [4]
    > > полно народу, кто еще на "семерочке" сидит.
    > а в процентах?

    Не придирайся :-p
    Из моих знакомых есть такие, у кого проекты 20+ лет.
    Я, вот, в свое время перелез на D2007, но больше не осилил - для работоспособности уникода проверять надо много, не могу 2-3 месяца выкроить(((
  • Eraser © (24.05.18 00:26) [6]

    > Тимохов Дима ©   (23.05.18 23:37) [5]


    > Из моих знакомых есть такие, у кого проекты 20+ лет.
    > Я, вот, в свое время перелез на D2007, но больше не осилил
    > - для работоспособности уникода проверять надо много, не
    > могу 2-3 месяца выкроить(((

    лень - двигатель прогресса видимо не про вас )
    лень есть, прогресса нету.

    2-3 месяца это какие-то сказки про белого бычка. вы там ОС пишите?
  • kilkennycat © (24.05.18 00:43) [7]

    > 2-3 месяца это какие-то сказки про белого бычка. вы там
    > ОС пишите?


    Сказки - это когда не 2-3 месяца.
    Меня всегда умиляли "Конструкции выходного дня" (в журнале "Радио" если память не изменяет). Их невозможно было сделать за выходной день.
  • asail © (24.05.18 01:40) [8]

    > Их невозможно было сделать за выходной день.

    А в рабочий?
  • Германн © (24.05.18 02:17) [9]

    > Тимохов Дима ©   (23.05.18 15:38) [2]
    >
    >
    > > Eraser ©   (23.05.18 15:36) [1]
    >
    > полно народу, кто еще на "семерочке" сидит.
    >

    Имхо 99% из них это студенты различных учебных заведений.

    > Я, вот, в свое время перелез на D2007, но больше не осилил
    > - для работоспособности уникода проверять надо много

    Я тоже в своё время перелез туда же, но дальше даже и лезть не стал. Ну нет у моих проектов необходимости в юникоде. По крайней мере пока ANSI кодировка Виндой поддерживается.
    Но между Д2007 и Д7 очень большая разница!
  • kilkennycat © (24.05.18 02:22) [10]

    > asail ©   (24.05.18 01:40) [8]

    > А в рабочий?


    Какой нормальный человек делает что-то в рабочий день? )
    Вспоминается анекдот про среду...
  • Eraser © (24.05.18 03:10) [11]

    > kilkennycat ©   (24.05.18 00:43) [7]

    а что там переводить то?
    я криптобиблиотеку lockbox2, которую, в то время 10 лет назад использовали, за день перевел, где ОЧЕНЬ много было кусков, в которых строка использовалась, как буфер.
    еще несколько дней на остальные правки. причем, самое сложное - это поиск потенциально опасных кусков кода, при том, что их может быть и не много и править их легко.
    сложности, наверное, могут быть с сетью и самописными протоколами.
    возможно, с полями в БД, хотя, трудоемких проблем тоже не вижу.

    ну да, какое-то время будут вылазить баги, если внедрение юникода было небрежным, но как в 2018 году можно работать с НЕ юникодом и решать проблемы "кракозябр" и "вопросиков" мне не понятно.


    > По крайней мере пока ANSI кодировка Виндой поддерживается.

    думаю это вопрос ближайших лет, в очередном обновлении десятки лавочку прикроют.
    прикрыли же лавочку со всеми драйверами, подписанными не MS, несколько месяцев назад, что называется, без шума и пыли.

    надеюсь, что win32 api еще хотя бы на десяток лет хватит.
  • kilkennycat © (24.05.18 04:04) [12]

    > но как в 2018 году можно работать с НЕ юникодом и решать
    > проблемы "кракозябр" и "вопросиков" мне не понятно.

    тут полностью согласен.
    однако, до сих пор попадается что у нас, что за бугром, относительно современные поделки с кракозябрами. И это хорошо, так как маленькая часть этого ужаса приносит мне немножко и изредка, но все же денег )
  • Inovet © (24.05.18 05:35) [13]
    > [11] Eraser ©   (24.05.18 03:10)
    > возможно, с полями в БД, хотя, трудоемких проблем тоже не вижу.

    Тем более не должно быть проблем - поля в БД не трогаем, остальное само меняется в новое версии компонентов доступа, если только не самописные компоненты какие.
  • Inovet © (24.05.18 05:40) [14]
    > [12] kilkennycat ©   (24.05.18 04:04)
    > относительно современные поделки с кракозябрами

    Например словарь с учебником немецкого языка, не простого, а самого крутого из Германии, где педантичные немцы всё должны на 10 версий вперёд предусмотреть. Но они не знают, что бывают языки в интерфейсе ОС по умолчанию какие-то кроме немецкого, видимо, это сверх понимания. Почему на юникод не первели программу, я уж не знаю.
  • Игорь Шевченко © (24.05.18 07:28) [15]

    > проблема в том, что у вас для разработки используется ПО
    > 10 летней давности )


    ПО не черствеет. А если у кого есть лишнее время бежать в ногу и обновляться на каждый чих, кто им доктор ?
  • kilkennycat © (24.05.18 10:09) [16]

    > ПО не черствеет

    ну да. Например, вин 3.11 свежа как и прежде.
  • asail © (24.05.18 19:03) [17]

    > ну да. Например, вин 3.11 свежа как и прежде.

    А что с ней не так? Она и сегодня позволяет делать ровно тоже самое, что и 25 лет назад.
  • kilkennycat © (24.05.18 19:39) [18]

    > Она и сегодня позволяет делать ровно тоже самое, что и 25
    > лет назад.

    У меня большие сомнения, Что она встанет на комп ровно точно также, как и 25 лет назад.
    Или надо ровно точно такой же комп?
    Полагаю, сидящие без ненужного-никому-юникода имеют такой.
  • QAZ © (24.05.18 19:41) [19]

    > прикрыли же лавочку со всеми драйверами, подписанными не
    > MS, несколько месяцев назад, что называется, без шума и
    > пыли

    а что там собственно прикрыли?
    только вчера установил десятку 1803, все дрова без MS встали даже не пикнув
  • Eraser © (24.05.18 21:10) [20]

    > Игорь Шевченко ©   (24.05.18 07:28) [15]


    > ПО не черствеет.

    оно то не черствеет, только, грубо говоря, подрядчика могут сменить, если речь о корпоративном ПО, как в нашем случае.


    > QAZ ©   (24.05.18 19:41) [19]


    > а что там собственно прикрыли?

    прикрыли все драйвера, подписанные не MS (причем, не важно, подписываете ли вы обычным сертификатом или EV), нужно, конечно, включить secure boot, если такой имеется, тогда эффект всплывет.
  • Тимохов Дима © (24.05.18 23:07) [21]
    > Eraser ©   (24.05.18 00:26) [6]

    Если бы переходить на уникод было просто, не писал бы итальянец (елки, забыл как его) свои хендбуки. Как раз его книгу про переход на уникод я читал. Оценив работу, понял, что буду ждать подходящего "окна". Вот, пока жду.

    Насчет, пишу ли я ОС. Нет, ОС не пишу. Но так сложилось, что датабазными компонентами и контролами не пользуюсь. Есть своя аля ORM надстройка.

    Есть и банарное хранение. Все это надо тестировать вдумчиво.

    --

    И вообще. Не надо, не пользуйся))) Я, видимо, ошибся, не сказав четко, что мой пост для устаревших версий дельфи.
  • asail © (25.05.18 00:23) [22]

    > У меня большие сомнения, Что она встанет на комп ровно точно
    > также, как и 25 лет назад.
    > Или надо ровно точно такой же комп?

    Ну может, и не встанет. Хотя, почему бы и нет? Ну да, дрова под всякие юсб и нвидии с блютузами, конечно, не встанут, многоядерность работать тоже не будет, памяти в 64 Гб она тоже не увидит... Но всего этого 25 лет назад и небыло, так что, пофиг... Единственное, как она с нынешнеми контроллерами ЖД подружится, тут вопрос. Кстати, интересно бы попробовать на какой-нибудь VM ее поставить. Но лень, если честно... :)
  • Германн © (25.05.18 01:46) [23]

    > kilkennycat ©   (24.05.18 10:09) [16]
    >
    >
    > > ПО не черствеет
    >
    > ну да. Например, вин 3.11 свежа как и прежде.

    Наверно стоит всё-таки различать пользовательское ПО и Операционную Систему (ОС).
    Но я не вижу пока препятствий для установки 3.11 на современный комп. Сам 3.11 не пробовал, но Win98 на виртуалке встала как штык. А чем 3.11 хуже?

    А препятствия пока встречал только два раза. Первый когда NT отказалась работать с аппаратными ресурсами в 16-битных программах. Второй когда х64 отказалась вообще работать с 16-битными программами.
  • KilkennyCat © (25.05.18 02:30) [24]

    > Win98 на виртуалке

    на виртуалке можно андроид поставить в котором будет виртуалка денди, в которой будет виртуалка 3.11

    Я про нативный вариант.
    И вообще про прогресс. Про моральное устаревание - есть такое понятие.


    > стоит всё-таки различать пользовательское ПО и Операционную Систему (ОС).

    Не в этом случае. И вообще, это довольно-таки одно и тоже. что есть ОС? некая программа, в которой живет пользовательское ПО. Что есть виртуальная машина? Некое пользовательское ПО, в которой живет ОС.
    И даже "первично-вторично" не особо прокатит: существовали, а мож и ща существуют варианты, где виртуалка идет первой.
  • kilkennycat © (25.05.18 02:31) [25]

    > asail ©   (25.05.18 00:23) [22]

    пробовал. даже 95 уже нормально не устанавливается на большинстве современных платформ.
  • Германн © (25.05.18 02:42) [26]

    > KilkennyCat ©   (25.05.18 02:30) [24]
    >
    >
    > > Win98 на виртуалке
    >
    > на виртуалке можно андроид поставить в котором будет виртуалка
    > денди, в которой будет виртуалка 3.11
    >
    > Я про нативный вариант.

    Какой нафиг нативный вариант?
  • Германн © (25.05.18 02:43) [27]

    > kilkennycat ©   (25.05.18 02:31) [25]
    >
    >
    > > asail ©   (25.05.18 00:23) [22]
    >
    > пробовал. даже 95 уже нормально не устанавливается на большинстве
    > современных платформ.

    Поясни.
  • kilkennycat © (25.05.18 03:14) [28]

    > Какой нафиг нативный вариант?

    берем  современный комп голый (без современной ос и виртуалки) и ставим вин311


    > Поясни.

    я не помню уже что именно былой причиной, это была попытка любопытства ради и давно.
    но думаю, их было множество, начиная с банальной тактовой частоты проца.
  • Eraser © (25.05.18 03:48) [29]

    > Тимохов Дима ©   (24.05.18 23:07) [21]


    > Если бы переходить на уникод было просто, не писал бы итальянец
    > (елки, забыл как его) свои хендбуки

    извиняюсь за прямоту - какую-то субъективную чушь прочел 10 лет назад и делаешь выводы.

    вот весь переход
    http://edn.embarcadero.com/article/38446
    http://edn.embarcadero.com/article/38582
    http://edn.embarcadero.com/article/38703

    что там сложного и затянутого, мне ни разу не понятно.


    > И вообще. Не надо, не пользуйся)))

    ну, допустим, не надо. только это противоречит теме данной ветки.
    полным ходом идет решение каких-то проблем с align 10 летней давности, потому что на новую версию переходить нельзя, т.к. юникод, но юникод не нада )
  • Тимохов Дима © (25.05.18 10:58) [30]

    > Eraser ©   (25.05.18 03:48) [29]
    > извиняюсь за прямоту - какую-то субъективную чушь прочел
    > 10 лет назад и делаешь выводы.


    Марко Кенту чушь значит пишет?
    Ну ты крут!

    Я оцениваю свои трудозатраты по переводу своего проекта на уникод как 2-3 месяца. У меня их нет. Все) Хватит об этом.
  • Eraser © (25.05.18 18:15) [31]

    > Тимохов Дима ©   (25.05.18 10:58) [30]


    > Марко Кенту чушь значит пишет?

    не помню, чтобы Марко Кенту что-то страшное насчет юникода писал.
    читаем первоисточник
    https://www.embarcadero.com/images/dm/technical-papers/delphi-and-unicode-marco-cantu.pdf

    As we will see in this white paper that are some new concepts to learn and a few caveats, but
    the changes opens up many opportunities. And in case you need to improve compatibility, you
    can still keep part of your code to use the traditional string format. But let me not rush though
    the various topics, and rather start from the beginning. One final word of caution: the concepts
    behind Unicode and some of the new features provided by Delphi 2009 take some time to
    learn, but you can certainly start using Delphi 2009 and convert your existing Delphi
    applications right away, with no need to know about all of the gory details. Using Unicode in
    Delphi 2009 is much easier than it might look!
  • Германн © (26.05.18 02:53) [32]

    > kilkennycat ©   (25.05.18 03:14) [28]
    >
    >
    > > Какой нафиг нативный вариант?
    >
    > берем  современный комп голый (без современной ос и виртуалки)
    > и ставим вин311
    >

    Ну надо пробовать, если нужно.
  • Inovet © (26.05.18 06:34) [33]
    > [28] kilkennycat ©   (25.05.18 03:14)
    > берем  современный комп голый (без современной ос и виртуалки)
    > и ставим вин311

    Берём счёты и не ставим на них ничего. Проверено веками - работает.
  • kilkennycat © (26.05.18 06:40) [34]

    > Inovet ©   (26.05.18 06:34) [33]

    Пальцы! И ничего брать не нужно.
  • Дмитрий Белькевич © (26.05.18 13:03) [35]
    Я перенёс проекты с 7-ки на 2009 (а потом 2010) за где-то примерно месяц. Около миллиона строк, при том, что либ тогда еще почти не было, сейчас уже обновилось почти всё. Не думаю, что я какой-то уж великий программист, и все в этой ветке хуже меня.


    > Я оцениваю свои трудозатраты по переводу своего проекта
    > на уникод как 2-3 месяца. У меня их нет.


    Я вот примерно тоже так думал :) Пока не сел и не сделал. Глаза боятся, а руки делают.
  • Тимохов Дима © (26.05.18 13:47) [36]

    > Дмитрий Белькевич ©   (26.05.18 13:03) [35]


    > Я вот примерно тоже так думал :) Пока не сел и не сделал.
    >  Глаза боятся, а руки делают.

    У меня много года типа p: PChar;... p := p+1 для лазинья по памяти.
    Я уже лет 15 так не пишу, ибо знаю давно, что будут проблемы с уникодом. Ну это очень старый код. Но активно используется...
    Но озвученный оптимизм внушает ... оптимизм)) Надо попробовать будет.
  • Дмитрий Белькевич © (26.05.18 14:08) [37]
    >У меня много года типа p: PChar;... p := p+1 для лазинья по памяти.

    старый код можно утащить в ансичар, что бы не переписывать много и сразу. пусть так и работает, как работало. захочешь позже переписать - перепишешь.
  • Eraser © (27.05.18 17:28) [38]

    > Тимохов Дима ©   (26.05.18 13:47) [36]


    > У меня много года типа p: PChar;... p := p+1 для лазинья
    > по памяти.

    скажу банальность, но если pchar используется для не строковых данных, то ничего скорее всего, менять не придется.


    > Ну это очень старый код. Но активно используется...

    уверен, что таких мест в коде очень мало.
    таких операций в принципе не может быть много, если это не криптобиблиотека или что-то в этом духе.
  • Тимохов Дима © (28.05.18 09:56) [39]

    > Eraser ©   (27.05.18 17:28) [38]

    Работа с бинарниками не только в крипто бывает.
    У меня много бинарной работы.
    Например, у меня есть самописный экспорт в BIFF8 для Excel 2003. Там сплошная бинарная работа. Надо бы на XLSReadWriteII перейти. Но все руки не дойдут.

    Но убедил. Надо переходить))
  • KSergey © (28.05.18 10:53) [40]
    > Eraser ©   (25.05.18 03:48) [29]
    > вот весь переход

    Для очень ограниченного наборы условий.
    Другое дело, что, быть может, этот ограниченный набор покрывает заметную часть приложений, ограничивающийся чисто Delphi (т.е. не взаимодействующих с другим ПО, кроме собственно ОС). Но когда этим дело ен ограничивается - то переход на новую версию с Unicode - огромная работа.
 
Конференция "Прочее" » Ошибка в работе Align на Win10 (полезная инфа)
Есть новые Нет новых   [134427   +34][b:0][p:0.001]