Совместимость на WinXP и Vista - PullRequest
3 голосов
/ 31 января 2010

Я разработал приложение, используя также сторонние компоненты (разработанные на D7, WinXP). При развертывании этого приложения на XP все работает нормально. Когда я запускаю его в Vista, приложение перестает нормально работать:

  • Кнопки инструментов на панели инструментов не имеют одинакового размера, когда я включаю / выключаю видимость, поэтому скины (сторонних производителей) неправильно вложены, и тогда это выглядит некрасиво. Это беспокоит, это раздражает, но это не смертельно, как следующий пункт.

  • Сторонний компонент обработки текста перестает писать. Я написал несколько процедур, которые позволяют писать на этом компоненте при определенных обстоятельствах. Было большим шоком узнать, что я ничего не могу написать (вероятно, эти процедуры возвращают false для записи, но я не вижу никакой причины, почему на XP это должно работать нормально, а на Vista нет).

Приложение запускается (наконец-то), но не так, как предполагалось !!!!

Я бы хотел отладить его, но как?

  • Должен ли я установить Delphi 7 на этот проблемный компьютер Vista и скомпилировать на нем проект? (это то, что я собираюсь сделать ...)
  • Это проблема сторонних компонентов?
  • Есть ли возможность использовать некоторые директивы компилятора, чтобы приложение работало в Vista безупречно? (если честно, я не знаю, будет ли Vista претендовать на это вообще).
  • Delphi 7 слишком стар для Vista?

Примечание: Когда я запускаю то же приложение на Win98, я получаю сообщение об ошибке о недопустимой операции с плавающей запятой ...

Кто-нибудь решил такую ​​проблему?

Спасибо

Ответы [ 3 ]

5 голосов
/ 31 января 2010

Если Delphi 7 совместим с Windows Vista, это означает только одно или оба из следующих действий:

  1. Вы можете запустить Delphi 7 в Windows Vista
  2. Delphi 7 можно использовать для написания программ, которые могут работать в Windows Vista

Это не автоматически означает, что

  • Все программы, которые я создаю в Delphi 7, работают в Windows Vista
  • Все программы, которые я создаю в Delphi 7, правильно работают в Windows Vista

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

Если ваша программа, либо в вашем собственном коде, либо в качестве части сторонних компонентов, которые вы используете, использует части Windows, которые были изменены или, возможно, даже удалены (хотя это гораздо меньше), то вам нужно исправить свою программу нет пути назад.

Там нет и серебряной пули, поэтому нет директив компилятора или еще чего-нибудь. Самое большее, о чем я могу думать, - это то, что, возможно, в Windows Vista есть некоторые параметры совместимости для ярлыков, которые могут включать некоторый уровень совместимости с XP в Vista, который устраняет конкретные проблемы, которые у вас есть.

Однако единственное долгосрочное решение состоит в том, чтобы изменить вашу программу так, чтобы она была должным образом совместима с Windows Vista и, вероятно, с Windows 7.

Поскольку вы говорите, что используете сторонние компоненты, проверили ли вы, какие конкретные версии, которые вы используете, совместимы с Vista? Вы должны проверить веб-сайты авторов, чтобы найти это. Возможно, это можно решить, просто обновив эти компоненты.

Однако может также потребоваться внести изменения в собственный код.

Лучший способ двигаться вперед - это установить Vista и, возможно, Windows 7 и начать отладку, чтобы попытаться найти причину проблем.

Обратите внимание, что простая установка Delphi 7 в Vista и перекомпиляция ничего не исправит. Компилятор не создает другую программу, если вы компилируете ее для определенной версии Windows. Только изменения в коде будут применять необходимые изменения.

1 голос
/ 31 января 2010

Самое простое решение - убедиться, что ваша версия Delphi и компоненты сторонних производителей совместимы с Vista.

Delphi версии с 2007 года. Последние компоненты TMS, DevExpress и Raize являются.

Трудное решение - сделать все изменения самостоятельно. Будьте готовы модифицировать источники VCL с 2002 года, тщательно модифицируйте их, чтобы довести их до уровня Delphi 2007. Затем сделайте то же самое для сторонних компонентов.

- Йерун

0 голосов
/ 31 января 2010

Я никогда не исследовал, но заметил, что в некоторых моих приложениях во всех режимах скина (XP-teletubbie и Vista / W7 non classic) у меня были артефакты рисования со всеми версиями delphi, если я помещал кнопки и метки напрямую на кадрах или таблицах.

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

...