Используйте isinstance
, чтобы проверить, что это за объект. В настоящее время вы используете len()
для string
Пример:
tpl = ('path1', 'path2', ('orig1', 'patch1'), ('orig2', 'patch2'))
for item in tpl:
print(item)
if isinstance(item, tuple):
num = len(item)
else:
num = 1
print(num)
Выход:
path1
1
path2
1
('orig1', 'patch1')
2
('orig2', 'patch2')
2
Согласно документации Microsoft только исполняемый блок требует licenses.licx. Блоки Dll с формами в них все еще создадут один, но это проигнорировано. Это было моим опытом также. Я предложил бы открыть каждую форму в представлении разработчика и восстановить в то время как в том представлении. Это будет обычно добавлять любые недостающие записи лицензии в licenses.licx. Это, однако, не обновит существующие записи. Это может быть проблемой при обновлении компонентов. Для ComponentOne можно обычно редактировать licenses.licx и удалять информацию о версии после имени сборки. Некоторые другие сторонние компоненты являются более привередливыми и касающимися, их информация о версии вызывает ошибки, когда Вы компилируете.
По-моему, платформа лицензирования.NET является громоздкой и ненужная нагрузка на разработчиках. Существуют намного более легкие способы гарантировать, что лицензии компонента уважают.
Необязательно открывать все формы. У каждого проекта есть один файл licenses.licx. Просто убедитесь, что в этих файлах есть ссылка на C1FlexGrid, а затем выполните полную перестройку (Build | Rebuild All).
Это должно решить проблему.