| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > XE2, '!dx' вконце названия класса |
| Автор: superVad 10.7.2014, 15:11 |
| Перехожу с д7 на ХЕ2. В модулях юзается метод ClassName, который возвращает имя класса формы. И вот раньше он возвращал, например 'TMainForm', а стал 'TMainForm!dx'. Чего это он? |
| Автор: Poseidon 11.7.2014, 09:31 |
| А не смутило что ClassName вообще введен для отладки? Используй is и не мудри. |
| Автор: Poseidon 11.7.2014, 14:08 | ||
Для начала давай разберемся что ты потом с этим именем делаешь? Лично я вижу единственное практическое применение этому имени - это сравнение. Вроди этого:
Ну так вот тут лучше (и правильнее) будет сравнивать через is. |
| Автор: superVad 11.7.2014, 15:20 |
Оно просто используется для названия ини файла где хранятся настройки этой формы. Делал не я, если что Надо будет пробежаться по всем формам и поменять этот вызов на обычный текст. Я уже понял, что этому методу нельзя доверять. Остался чисто академический интерес. |
| Автор: Poseidon 11.7.2014, 15:38 |
| Я надеюсь сам ты хоть понимаешь, что это обсурд. Класс может иметь не один экземпляр. И если каждый захочет сохраниться, то все экземпляры будут дергать один и тот же файл, в результате победит только последний. Поменяй там Classname хотя бы на Name. VCL дает хоть мало-мальски какую-то гарантию индивидуальности Name. |
| Автор: superVad 12.7.2014, 12:10 | ||
Если я вдруг создам 2 раза одну и ту же форму одновременно, то Name там будет один и тот же. Если бы этот код использовался где то в предке форм - то в Classname (или Name) был бы смысл. А так - просто поменяю на текст. |
| Автор: Poseidon 12.7.2014, 12:41 |
| Если у них будет общий Owner (а при создании форм это обычно Application), то VCL не даст второй форме присвоить такое же имя. Единственное исключение - "пустые" имена. |
| Автор: superVad 12.7.2014, 15:44 | ||
Спасибо - не знал. Полез проверять - действительно добавляет к второй форме _1, к третьей _2 и т.д. Просто извне я к формам не обращаюсь, а изнутри разве что через Self. |
| Автор: drkot 16.7.2014, 00:40 |
Это мега глюк и не иначе. Возможно в коде идет перекрытие ClassName тем же хелпером. |