Перейти к содержимому

Фотография

Как получить Debug Info для стандартных рантайм-пакетов Delphi


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

#1 sshishkin722

sshishkin722

    Новый участник

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Шишкин Сергей Игоревич

Отправлено 19 января 2011 - 15:07

Добрый час!

Проблема следующая:
Использую TestComlete 7.50.653.7 и Embarcadero® Delphi® 2010 Version 14.0.3513.24210.
Тестируемый проект - набор dll файлов.
Собираем мы их с Debug Info (как в документации описано).
Когда из этих dll-файлов создаются окошки, я не могу получить доступ к некоторым свойствам (например, к Columns.Count объекта TDBGridEh).

Дополнительная информация и исследования:
Если собрать exe-файл с этим же элементом управления, то всё хорошо. Есть версия, что при статической линковке Delphi добавляет в exe-файл Debug Info, а dll-ки состоят из двух частей (наши собственные с Denug Info и стандартные рантайм-пакеты Delphi (rtlXXX.bpl, vclXXX.bpl и т.д.) без Denug Info).

Вопрос:
Как получить Denug Info для этих bpl-ек?
  • 0

#2 Sunshine

Sunshine

    Новый участник

  • Members
  • Pip
  • 33 сообщений

Отправлено 21 января 2011 - 13:25

Добрый час!

Проблема следующая:
Использую TestComlete 7.50.653.7 и Embarcadero® Delphi® 2010 Version 14.0.3513.24210.
Тестируемый проект - набор dll файлов.
Собираем мы их с Debug Info (как в документации описано).
Когда из этих dll-файлов создаются окошки, я не могу получить доступ к некоторым свойствам (например, к Columns.Count объекта TDBGridEh).

Дополнительная информация и исследования:
Если собрать exe-файл с этим же элементом управления, то всё хорошо. Есть версия, что при статической линковке Delphi добавляет в exe-файл Debug Info, а dll-ки состоят из двух частей (наши собственные с Denug Info и стандартные рантайм-пакеты Delphi (rtlXXX.bpl, vclXXX.bpl и т.д.) без Denug Info).

Вопрос:
Как получить Denug Info для этих bpl-ек?


В своё время мы пробовали скомпилить стандартные модули с дебаг-инфой, но нормально заставить работать приложение так и не получилось. Если погуглить, то найти рецепт для компиляции можно. Насчёт TDBGridEh - попробуйте так: table.Columns.FItems.Count - должно вернуться реально присутствующее количество колонок.
  • 0

#3 sshishkin722

sshishkin722

    Новый участник

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Шишкин Сергей Игоревич

Отправлено 28 января 2011 - 13:58

[/quote]

В своё время мы пробовали скомпилить стандартные модули с дебаг-инфой, но нормально заставить работать приложение так и не получилось. Если погуглить, то найти рецепт для компиляции можно. Насчёт TDBGridEh - попробуйте так: table.Columns.FItems.Count - должно вернуться реально присутствующее количество колонок.
[/quote]
Спасибо за ответ. Работает. Но это ведь была не самоцель, а просто пример. К тому же я не понял, как узнать, что данное свойство есть у TDBGridEh или какого-то другого класса. "Автокомплит" ни в TestComplete ни в Delphi это свойство не показывал. Оно Ptivate? Как о таких свойствах узнавать? Смотреть исходники?
Хочется понять как наилучшим образом использовать TestComplete с нашим проектом. Я сейчас вижу три возможности:
1) Попытаться всё-таки собрать Delphi runtime packages. Результат гадателен.
2) Добавить к нашим классам ещё один, назовём его TestCompleteHelper, который будет поставлять недостающие функции (в Delphi-то я смогу обращаться к public свойствам и методам). Например, SelectMainGridCell(n, m).
3) Собрать dll-ки без пакетов тогда Debug Info вместе с кодом рантайм пакетов попадёт в них. Но в таком виде их пользователю не отдашь. Возникает ситуация, когда тестируем не то, что отдаём пользователю.
4) Просто использовать TestComplete без всего вышеперечисленного. Получатся ли при этом нормальные, читабельные, устойчивые к незначительным изменениям скрипты. Как вы всё-таки узнали про table.Columns.FItems.Count? Есть какой-то системный подход?
  • 0

#4 Sunshine

Sunshine

    Новый участник

  • Members
  • Pip
  • 33 сообщений

Отправлено 31 января 2011 - 14:00

В своё время мы пробовали скомпилить стандартные модули с дебаг-инфой, но нормально заставить работать приложение так и не получилось. Если погуглить, то найти рецепт для компиляции можно. Насчёт TDBGridEh - попробуйте так: table.Columns.FItems.Count - должно вернуться реально присутствующее количество колонок.
Спасибо за ответ. Работает. Но это ведь была не самоцель, а просто пример. К тому же я не понял, как узнать, что данное свойство есть у TDBGridEh или какого-то другого класса. "Автокомплит" ни в TestComplete ни в Delphi это свойство не показывал. Оно Ptivate? Как о таких свойствах узнавать? Смотреть исходники?
Хочется понять как наилучшим образом использовать TestComplete с нашим проектом. Я сейчас вижу три возможности:
1) Попытаться всё-таки собрать Delphi runtime packages. Результат гадателен.
2) Добавить к нашим классам ещё один, назовём его TestCompleteHelper, который будет поставлять недостающие функции (в Delphi-то я смогу обращаться к public свойствам и методам). Например, SelectMainGridCell(n, m).
3) Собрать dll-ки без пакетов тогда Debug Info вместе с кодом рантайм пакетов попадёт в них. Но в таком виде их пользователю не отдашь. Возникает ситуация, когда тестируем не то, что отдаём пользователю.
4) Просто использовать TestComplete без всего вышеперечисленного. Получатся ли при этом нормальные, читабельные, устойчивые к незначительным изменениям скрипты. Как вы всё-таки узнали про table.Columns.FItems.Count? Есть какой-то системный подход?


Все свойства и методы, можно посмотреть в Object Browser-е TestComplete-а ну или в окне Object Properties. Если есть исходники, то в них.

По поводу использования. Со стороны автоматизации - идеален вариант №2, только не отдельным классом, а расширением TDBGridEh, худший вариант - №4.
Про table.Columns.FItems.Count узнал, посмотрев в Object Browser-e. Про системность подхода говорить не буду - думаю мой подход уже ясен.
  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных