Есть ли будущее у DELPHI?
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.14] |
|
|
Правила раздела:
| Страницы: (245) « Первая ... 50 51 [52] 53 54 ... 244 245 ( Перейти к последнему сообщению ) |
Есть ли будущее у DELPHI?
|
Сообщ.
#766
,
|
|
|
|
ну, собсено, примерно так и делается например, передается секунда в сутках и наносекунды в секунде. |
|
Сообщ.
#767
,
|
|
|
|
Да и вообще нет никаких WinApi-типов, там что хотят то и используют, и как хотят |
|
Сообщ.
#768
,
|
|
|
|
Цитата --Ins-- @ Прямейшее. Если ты пишешь модуль, с которым можно будет работать из другой программной среды, то к входным/выходным параметрам (и не только) предъявляются определенные требования, а использование ole-совместимых типов это требование выполняет и каким образом набор параметров "имитирующих" структуру системтайм не удовлетворяет этим требованиям? та не поверишь, как раз мне в общем-то насрать на такие мелочи а представление дискретных величин вещественным числом - это рудимент |
|
Сообщ.
#769
,
|
|
|
|
Дааа... Вот оно как Михалыч...
Очевидно, что через SEH. Цитата --Ins-- @ COM/Ole -- это всего лишь пара-тройка договорённостей. Они на столько же надёжны, на сколько надёжны "протоколы" WinApi, потому как на них базируются. Это всего лишь надстройка. И не сказать чтобы очень удачная. Это технология скорее мертва, чем жива. Очевидно, что межязыковое взаимодействие будет осуществлятся при помощи .net.COM/Ole унифицирует же работу и с параметрами, и с классами/объектами, и с исключениями Цитата --Ins-- @ А про platform sdk слышал чего нить? В частности там есть wintypes.h -- все принятые в WinApi типы. И windows.h там описаны макросы под большинство принятых в WinApi соглашений и описание базовых функций. Вот в делфи в частности -- да. Борланд/эмбрекардео по каким то причинам не хочет портировать platform sdk под свою платформу, а потому там кто в лес, кто по дрова. Да и вообще нет никаких WinApi-типов, там что хотят то и используют, и как хотят |
|
Сообщ.
#770
,
|
|
|
|
Чтение последних постов навеваеет настальгические воспоминания
|
|
Сообщ.
#771
,
|
|
|
|
Цитата D_KEY @ [trolling_mode]Что там, когда в ваш богомерзкий посикс юникод добавят? XXI век поди за окном. Чтение последних постов навеваеет настальгические воспоминания ![]() [/trolling_mode] |
|
Сообщ.
#772
,
|
|
|
|
Цитата Повстанець @ [trolling_mode]Что там, когда в ваш богомерзкий посикс юникод добавят? XXI век поди за окном. [/trolling_mode][more_fat_trolling_mode]Не знаю, какие там проблемы с юникодом в ваших недоОСях, но в нашем теплом и ламповом Plan 9 юникод есть с тех времен, когда виндовсы пешком под стол ходили =)[/more_fat_trolling_mode] |
|
Сообщ.
#773
,
|
|
|
|
Цитата _lcf_ @ и каким образом набор параметров "имитирующих" структуру системтайм не удовлетворяет этим требованиям? Вопрос в другом, каким образом TDateTime не удовлетворяет этим требованиям, что ты так проклинал разработчика? Цитата Повстанець @ Очевидно, что через SEH. DLL возбудила исключения, на ее стороне был создак класс исключения с информацией об ошибке. Вопросы: 1. Как приемная сторона узнает что за ошибка? 2. Кто освободит объект исключения? Добавлено Цитата Повстанець @ Это технология скорее мертва, чем жива. Очевидно, что межязыковое взаимодействие будет осуществлятся при помощи .net. Это как говорится уже другой вопрос, к изначальному отношение не имеющий |
|
Сообщ.
#774
,
|
|
|
|
Цитата --Ins-- @ SEH не языковые, а системные. У приёмной стороны и выбора то особо не будет, она либо перехватит его, либо завалится.1. Как приемная сторона узнает что за ошибка? Цитата --Ins-- @ А это как раз от тебя и зависит. Можешь сам удалить, можешь делегировать на клиента. Да, кста, вот у меня вопрос такой: а не путаешь ли ты нативную для СОМ систему оповещения об ошибках, с тем, во что её конвертируют делфи обёртки? Что то ещё мне не доводилось встречать COM библиотеку, которая плевалась бы исключениями. В СОМ вообще принято через HRESULT код ошибки возвращать. 2. Кто освободит объект исключения? |
|
Сообщ.
#775
,
|
|
|
|
Цитата Chow @ Этот Int64 и есть Comp, только обрабатывается CPU, а не FPU. И появился он когда? А Comp существовал ещё с DOS. Хотя делов-то было бы - заменить определение типа. Его представление не изменилось от того, что был Comp, стал Int64.Лучше бы взяли просто Int64, туда б пихали наносекунды от, скажем, 1970 года.. - до 2500 хватило б. А TDateTime-то знаковый, вообще? Добавлено Цитата korvin @ Это что, дольше 21-го года?? [more_fat_trolling_mode]Не знаю, какие там проблемы с юникодом в ваших недоОСях, но в нашем теплом и ламповом Plan 9 юникод есть с тех времен, когда виндовсы пешком под стол ходили =)[/more_fat_trolling_mode] |
|
Сообщ.
#776
,
|
|
|
|
Цитата Повстанець @ SEH не языковые, а системные. У приёмной стороны и выбора то особо не будет, она либо перехватит его, либо завалится. Я понимаю что системные. Повторяю вопрос, как приемная сторона узнает о том, какое именно исключение возникла (тип, параметры исключения, текст сообщения)? Цитата Повстанець @ А это как раз от тебя и зависит. Можешь сам удалить, можешь делегировать на клиента. Бррр Временем жизни объекта исключения я не управляю. Так вот, возникло исключение в dll, которое уничтожиться должно уже после обработки. Ну вот внешний код это исключение поймал - через SEH-фрейм нашелся его обработчик. Кто удалит объект исключения?Цитата Повстанець @ Что то ещё мне не доводилось встречать COM библиотеку, которая плевалась бы исключениями. В СОМ вообще принято через HRESULT код ошибки возвращать. Да, HResult, это как раз и есть тот самый механизм (safecall+hresult+интерфейсы с информацией об ошибке), которые позволяют корректно обрабатывать исключения, пусть даже генерируемые кодом на другом языке программирования Не знаю как c++, но нормальные языки поступают так:- возбуждаемое в модуле исключение преобразуется в HResult - полученный HResult из стороннего модуля преобразуется в исключение Что позволяет корректно гонять исключения между различными программными модулями, написанными в разных языках программирования, и при этом и всю информацию об ошибке получать, и все объекты корректно освобождать |
|
Сообщ.
#777
,
|
|
|
|
Цитата --Ins-- @ Я понимаю что системные. Повторяю вопрос, как приемная сторона узнает о том, какое именно исключение возникла (тип, параметры исключения, текст сообщения)? !Цитата --Ins-- @ Опять же, читал бы ты msdn, знал бы, что обработчики можно выстраивать в очередь. В смысле обработчики нижнего уровня вызывают обработчики верхнего уровня. Допустим dll ка подписалась на своё собственное исключение и оказалась в самом низу (гарантировать это возможно). Тогда она вызывает серию чужих обработчиков и после этого удаляет свой объект. Но это в теории. На практике таким никто не заморачивается, а передают либо константные указатели, не требующие удаления, либо просто айдишники.Бррр Временем жизни объекта исключения я не управляю. Так вот, возникло исключение в dll, которое уничтожиться должно уже после обработки. Ну вот внешний код это исключение поймал - через SEH-фрейм нашелся его обработчик. Кто удалит объект исключения?Цитата --Ins-- @ Тюю... так причём тут СОМ? Это работа сугубо языковых механизмов осуществляемая уже за методами использования СОМ. Да, HResult, это как раз и есть тот самый механизм (safecall+hresult+интерфейсы с информацией об ошибке), которые позволяют корректно обрабатывать исключения, пусть даже генерируемые кодом на другом языке программирования Не знаю как c++, но нормальные языки поступают так:- возбуждаемое в модуле исключение преобразуется в HResult - полученный HResult из стороннего модуля преобразуется в исключение Что позволяет корректно гонять исключения между различными программными модулями, написанными в разных языках программирования, и при этом и всю информацию об ошибке получать, и все объекты корректно освобождать |
|
Сообщ.
#778
,
|
|
|
|
Повстанець, ты вообще меня не понимаешь, или делаешь вид. Лови пример:
![]() Вот моя замечательная DLL, которая использует винапишный протокол, и там такая замечательная функция: ![]() ![]() function MySuperFunction(Index: Integer): BOOL; begin raise EListIndexError.Create(Format('Invalid index: %d', [Index])); end; Вопросы: 1. Как вызывающий код узнает, что ошибка - это ошибка индекса, и как ему получить сообщение 'Invalid index...' 2. Кто где и когда уничтожит мой объект класса EListIndexError, который я создал в этой функции при генерации исключения? Добавлено Цитата Повстанець @ Тюю... так причём тут СОМ? COM/Ole - это протокол, который устанавливает единые правила игры. И эти правила игры мне гарантируют и то и се что я уже перечислил. Вот и притом |
|
Сообщ.
#779
,
|
|
|
|
Цитата --Ins-- @ 1. Как вызывающий код узнает, что ошибка - это ошибка индекса, и как ему получить сообщение 'Invalid index...' http://msdn.microsoft.com/en-us/library/wi...v=vs.85%29.aspx В исключении передаётся вполне достаточно информации для чего угодно. Цитата --Ins-- @ Чувак, ну ты прикалываешься, или что? Твой объект класса EListIndexError не имеет никакого отношения ни к СОМ, ни к WinApi. Ровно как и твой оператор raise. Мало того, что его никто удалять не будет, так это исключение ещё никто и не получит. 2. Кто где и когда уничтожит мой объект класса EListIndexError, который я создал в этой функции при генерации исключения? Добавлено Цитата --Ins-- @ Языковые исключения, к HRESULT вообще никакого отношения не имеют. Во всяком случае не большее, чем те же исключения к GetLastError из WinApi. COM/Ole - это протокол, который устанавливает единые правила игры. И эти правила игры мне гарантируют и то и се что я уже перечислил. Вот и притом |
|
Сообщ.
#780
,
|
|
|
|
Цитата --Ins-- @ Повстанець, ты вообще меня не понимаешь, или делаешь вид. Лови пример: ![]() Вот моя замечательная DLL, которая использует винапишный протокол, и там такая замечательная функция: ![]() ![]() function MySuperFunction(Index: Integer): BOOL; begin raise EListIndexError.Create(Format('Invalid index: %d', [Index])); end; Вопросы: 1. Как вызывающий код узнает, что ошибка - это ошибка индекса, и как ему получить сообщение 'Invalid index...' 2. Кто где и когда уничтожит мой объект класса EListIndexError, который я создал в этой функции при генерации исключения? Добавлено Цитата Повстанець @ Тюю... так причём тут СОМ? COM/Ole - это протокол, который устанавливает единые правила игры. И эти правила игры мне гарантируют и то и се что я уже перечислил. Вот и притом Как ты собрался ловить языковые исключения одного языка в другом? И в COM, насколько помню, используются коды ошибок, а не исключения. Так что только SEH... |