Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
895
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
906
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4351
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Delphi и COM: TLB и вопросы технического обслуживания
В компании, где я работаю, мы разрабатываем все GUI в C#,, но приложение kernel в основном разработано в Delphi 5 (по историческим причинам), с большим количеством компонентов, сделанных в COM+. В связи с этим очень специфическим видом применения a I два вопроса:
Опытные ребята в Delphi и / или COM, есть ли у вас какие-либо обходные пути для работы с багги TLB интерфейсом ? Некоторые из ошибок: IDE сбой во время выпуска большого TLB, потеря методов IDs, TLB повреждение и т.д. Здесь мы не нашли никакого хорошего решения. На самом деле мы пытались сделать обновление до новой версии 2007 года. Но новый интерфейс IDE TLB имеет те же ошибки, которые мы нашли раньше.
Как вы управляете версиями TLBs ? Файл TLB находится в двоичном формате, и разрешение конфликтов очень трудно сделать. Мы попытались сделать это, экспортируя описания интерфейсов в IDL и фиксируя в CVS, но мы не нашли никакого хорошего способа генерировать TLBs из IDL, используя Delphi. Кроме того, инструмент MIDL, предоставленный Microsoft, неправильно проанализировал файлы IDL, которые мы экспортировали из delphi.
Я думаю, вам стоит хорошенько взглянуть на Delphi 2009.
Delphi 2009 имеет изменения в поддержку COM, включая текстовую замену двоичных файлов TLB.
Вы можете прочитать больше в блоге Криса Бенсена .
В далеком прошлом (до того, как я начал работать на CodeGear) я отказался от странного Delphi-изед IDL языка, который представлял IDE, и написал свой собственный IDL и скомпилировал его с помощью MS midl. Это в значительной степени сработало; единственный улов, IIRC, был уверен, что dispids (ID attribute) были правильными на интерфейсах автоматизации (dispinterfaces) для геттеров свойств & setters - был некоторый инвариант, который ожидал tlibimp, но midl не гарантировал.
Однако теперь, когда Delphi 2009 использует безопасное подмножество синтаксиса midl и включает компилятор для этого midl в поле и интегрирован в IDE, эти проблемы должны быть в прошлом.
Мы также только что установили Delphi 2009 и, похоже, улучшили поддержку Typelibraries. Однако я довольно долго работал с библиотеками COM и типов, и вот мои общие готы, которые я нашел за эти годы. Я бы согласился, что он довольно глючный и находится на всем пути до Delphi 2006 (наша версия до использования 2009).
- Всегда имейте каждый файл, который можно записать перед открытием. Это может показаться очевидным, но при работе с системой управления версиями иногда мы забываем это сделать и пытаемся удалить флаг readonly после открытия файла - Delphi не может справиться с этим. Убедитесь, что tlb доступен для записи перед открытием.
- При редактировании отдельной библиотеки типов у вас MUST будет открыт проект. По какой-то причине, если вы откроете библиотеку типов самостоятельно, она не сохранится. Создайте пустой проект, а затем откройте библиотеку типов. По какой-то причине это позволяет сохранить библиотеку типов.
- Если ваша библиотека типов используется приложением или COM+, убедитесь, что приложение закрыто или COM + отключено перед открытием библиотеки типов. Любые открытые приложения будут препятствовать сохранению библиотеки типов.
Однако я думаю, что ваше лучшее решение-это, вероятно, обновление. Вы также получаете поддержку Unicode.
Использование Delphi 2009 значительно уменьшило боль от огромных TLB файлов, и преобразование наших существующих объектов было безболезненным, но наши com объекты не используют никаких сторонних библиотек.
Мы будем переносить наши gui-приложения, как только поставщики библиотек выпустят поддерживаемые версии.
Тот же опыт с интерфейсом TLB здесь: мы просто перестали его использовать.
Мы работаем с несколькими отдельными файлами IDL (ручная сборка) для различных частей нашего фреймворка, используя конструкцию #include, чтобы включить их в IDL фактического приложения, а затем создать один tlb с помощью MIDL и tlibimp его. Если приложение не имеет собственного IDL, доступны предварительно скомпилированные версии различных файлов framework TLB.
Всякий раз, когда платформа вводит новую версию, запускается сценарий для повторного создания GUIDS на всех необходимых интерфейсах в файлах IDL.
Это хорошо послужило нам в течение многих лет, и для того, чтобы мы могли перейти на новый набор инструментов Delphi 2009 IDL/TLB, он должен быть не только интегрирован в IDE, но и универсален, когда речь заходит об автоматизированных сборках и тому подобном. Не могу дождаться, чтобы запачкать руки с помощью некоторых экспериментов!