На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (245) « Первая ... 50 51 [52] 53 54 ...  244 245  ( Перейти к последнему сообщению )  
> Есть ли будущее у DELPHI?
    Цитата Chow @
    Лучше бы взяли просто Int64, туда б пихали наносекунды

    ну, собсено, примерно так и делается :yes: например, передается секунда в сутках и наносекунды в секунде.
      Цитата Повстанець @
      А WinApi типы не выполняют?


      Да и вообще нет никаких WinApi-типов, там что хотят то и используют, и как хотят
        Цитата --Ins-- @
        Прямейшее. Если ты пишешь модуль, с которым можно будет работать из другой программной среды, то к входным/выходным параметрам (и не только) предъявляются определенные требования, а использование ole-совместимых типов это требование выполняет

        и каким образом набор параметров "имитирующих" структуру системтайм не удовлетворяет этим требованиям? :wacko:
        Цитата --Ins-- @

        Это исключительно проблема твоего кутэ

        Цитата --Ins-- @
        Насрать на твое qt.

        та не поверишь, как раз мне в общем-то насрать на такие мелочи :D а представление дискретных величин вещественным числом - это рудимент :D
          Цитата --Ins-- @
          Протокол WinApi для межмодульного взаимодействия весьма ограничен и ненадежен
          Дааа... Вот оно как Михалыч... :lol:
          Цитата --Ins-- @
          (например как передавать между модулями исключения?)
          Очевидно, что через SEH.
          Цитата --Ins-- @
          COM/Ole унифицирует же работу и с параметрами, и с классами/объектами, и с исключениями
          COM/Ole -- это всего лишь пара-тройка договорённостей. Они на столько же надёжны, на сколько надёжны "протоколы" WinApi, потому как на них базируются. Это всего лишь надстройка. И не сказать чтобы очень удачная. Это технология скорее мертва, чем жива. Очевидно, что межязыковое взаимодействие будет осуществлятся при помощи .net.
          Цитата --Ins-- @
          Да и вообще нет никаких WinApi-типов, там что хотят то и используют, и как хотят
          А про platform sdk слышал чего нить? В частности там есть wintypes.h -- все принятые в WinApi типы. И windows.h там описаны макросы под большинство принятых в WinApi соглашений и описание базовых функций. Вот в делфи в частности -- да. Борланд/эмбрекардео по каким то причинам не хочет портировать platform sdk под свою платформу, а потому там кто в лес, кто по дрова.
            Чтение последних постов навеваеет настальгические воспоминания :)
              Цитата D_KEY @
              Чтение последних постов навеваеет настальгические воспоминания :)
              [trolling_mode]Что там, когда в ваш богомерзкий посикс юникод добавят? XXI век поди за окном. :D [/trolling_mode]
                Цитата Повстанець @
                [trolling_mode]Что там, когда в ваш богомерзкий посикс юникод добавят? XXI век поди за окном. :D [/trolling_mode]

                [more_fat_trolling_mode]Не знаю, какие там проблемы с юникодом в ваших недоОСях, но в нашем теплом и ламповом Plan 9 юникод есть с тех времен, когда виндовсы пешком под стол ходили =)[/more_fat_trolling_mode]
                  Цитата _lcf_ @
                  и каким образом набор параметров "имитирующих" структуру системтайм не удовлетворяет этим требованиям?


                  Вопрос в другом, каким образом TDateTime не удовлетворяет этим требованиям, что ты так проклинал разработчика?

                  Цитата Повстанець @
                  Очевидно, что через SEH.


                  DLL возбудила исключения, на ее стороне был создак класс исключения с информацией об ошибке. Вопросы:
                  1. Как приемная сторона узнает что за ошибка?
                  2. Кто освободит объект исключения?

                  Добавлено
                  Цитата Повстанець @
                  Это технология скорее мертва, чем жива. Очевидно, что межязыковое взаимодействие будет осуществлятся при помощи .net.


                  Это как говорится уже другой вопрос, к изначальному отношение не имеющий ;)
                    Цитата --Ins-- @
                    1. Как приемная сторона узнает что за ошибка?
                    SEH не языковые, а системные. У приёмной стороны и выбора то особо не будет, она либо перехватит его, либо завалится.
                    Цитата --Ins-- @
                    2. Кто освободит объект исключения?
                    А это как раз от тебя и зависит. Можешь сам удалить, можешь делегировать на клиента. Да, кста, вот у меня вопрос такой: а не путаешь ли ты нативную для СОМ систему оповещения об ошибках, с тем, во что её конвертируют делфи обёртки? Что то ещё мне не доводилось встречать COM библиотеку, которая плевалась бы исключениями. В СОМ вообще принято через HRESULT код ошибки возвращать.
                      Цитата Chow @
                      Лучше бы взяли просто Int64, туда б пихали наносекунды от, скажем, 1970 года.. - до 2500 хватило б.
                      Этот Int64 и есть Comp, только обрабатывается CPU, а не FPU. И появился он когда? А Comp существовал ещё с DOS. Хотя делов-то было бы - заменить определение типа. Его представление не изменилось от того, что был Comp, стал Int64.
                      А TDateTime-то знаковый, вообще?

                      Добавлено
                      Цитата korvin @
                      [more_fat_trolling_mode]Не знаю, какие там проблемы с юникодом в ваших недоОСях, но в нашем теплом и ламповом Plan 9 юникод есть с тех времен, когда виндовсы пешком под стол ходили =)[/more_fat_trolling_mode]
                      Это что, дольше 21-го года??
                        Цитата Повстанець @
                        SEH не языковые, а системные. У приёмной стороны и выбора то особо не будет, она либо перехватит его, либо завалится.


                        Я понимаю что системные. Повторяю вопрос, как приемная сторона узнает о том, какое именно исключение возникла (тип, параметры исключения, текст сообщения)?

                        Цитата Повстанець @
                        А это как раз от тебя и зависит. Можешь сам удалить, можешь делегировать на клиента.


                        Бррр :wacko: Временем жизни объекта исключения я не управляю. Так вот, возникло исключение в dll, которое уничтожиться должно уже после обработки. Ну вот внешний код это исключение поймал - через SEH-фрейм нашелся его обработчик. Кто удалит объект исключения?

                        Цитата Повстанець @
                        Что то ещё мне не доводилось встречать COM библиотеку, которая плевалась бы исключениями. В СОМ вообще принято через HRESULT код ошибки возвращать.


                        Да, HResult, это как раз и есть тот самый механизм (safecall+hresult+интерфейсы с информацией об ошибке), которые позволяют корректно обрабатывать исключения, пусть даже генерируемые кодом на другом языке программирования ;) Не знаю как c++, но нормальные языки поступают так:
                        - возбуждаемое в модуле исключение преобразуется в HResult
                        - полученный HResult из стороннего модуля преобразуется в исключение
                        Что позволяет корректно гонять исключения между различными программными модулями, написанными в разных языках программирования, и при этом и всю информацию об ошибке получать, и все объекты корректно освобождать
                          Цитата --Ins-- @
                          Я понимаю что системные. Повторяю вопрос, как приемная сторона узнает о том, какое именно исключение возникла (тип, параметры исключения, текст сообщения)?
                          :msdn: !
                          Цитата --Ins-- @
                          Бррр :wacko: Временем жизни объекта исключения я не управляю. Так вот, возникло исключение в dll, которое уничтожиться должно уже после обработки. Ну вот внешний код это исключение поймал - через SEH-фрейм нашелся его обработчик. Кто удалит объект исключения?
                          Опять же, читал бы ты msdn, знал бы, что обработчики можно выстраивать в очередь. В смысле обработчики нижнего уровня вызывают обработчики верхнего уровня. Допустим dll ка подписалась на своё собственное исключение и оказалась в самом низу (гарантировать это возможно). Тогда она вызывает серию чужих обработчиков и после этого удаляет свой объект. Но это в теории. На практике таким никто не заморачивается, а передают либо константные указатели, не требующие удаления, либо просто айдишники.
                          Цитата --Ins-- @
                          Да, HResult, это как раз и есть тот самый механизм (safecall+hresult+интерфейсы с информацией об ошибке), которые позволяют корректно обрабатывать исключения, пусть даже генерируемые кодом на другом языке программирования ;) Не знаю как c++, но нормальные языки поступают так:
                          - возбуждаемое в модуле исключение преобразуется в HResult
                          - полученный HResult из стороннего модуля преобразуется в исключение
                          Что позволяет корректно гонять исключения между различными программными модулями, написанными в разных языках программирования, и при этом и всю информацию об ошибке получать, и все объекты корректно освобождать
                          Тюю... так причём тут СОМ? Это работа сугубо языковых механизмов осуществляемая уже за методами использования СОМ.
                            Повстанець, ты вообще меня не понимаешь, или делаешь вид. Лови пример: ;)
                            Вот моя замечательная DLL, которая использует винапишный протокол, и там такая замечательная функция:
                            ExpandedWrap disabled
                              function MySuperFunction(Index: Integer): BOOL;
                              begin
                                raise EListIndexError.Create(Format('Invalid index: %d', [Index]));
                              end;


                            Вопросы:
                            1. Как вызывающий код узнает, что ошибка - это ошибка индекса, и как ему получить сообщение 'Invalid index...'
                            2. Кто где и когда уничтожит мой объект класса EListIndexError, который я создал в этой функции при генерации исключения?

                            Добавлено
                            Цитата Повстанець @
                            Тюю... так причём тут СОМ?


                            COM/Ole - это протокол, который устанавливает единые правила игры. И эти правила игры мне гарантируют и то и се что я уже перечислил. Вот и притом
                            Сообщение отредактировано: --Ins-- -
                              Цитата --Ins-- @
                              1. Как вызывающий код узнает, что ошибка - это ошибка индекса, и как ему получить сообщение 'Invalid index...'

                              http://msdn.microsoft.com/en-us/library/wi...v=vs.85%29.aspx

                              В исключении передаётся вполне достаточно информации для чего угодно.
                              Цитата --Ins-- @
                              2. Кто где и когда уничтожит мой объект класса EListIndexError, который я создал в этой функции при генерации исключения?
                              Чувак, ну ты прикалываешься, или что? Твой объект класса EListIndexError не имеет никакого отношения ни к СОМ, ни к WinApi. Ровно как и твой оператор raise. Мало того, что его никто удалять не будет, так это исключение ещё никто и не получит.

                              Добавлено
                              Цитата --Ins-- @
                              COM/Ole - это протокол, который устанавливает единые правила игры. И эти правила игры мне гарантируют и то и се что я уже перечислил. Вот и притом
                              Языковые исключения, к HRESULT вообще никакого отношения не имеют. Во всяком случае не большее, чем те же исключения к GetLastError из WinApi.
                                Цитата --Ins-- @
                                Повстанець, ты вообще меня не понимаешь, или делаешь вид. Лови пример: ;)
                                Вот моя замечательная DLL, которая использует винапишный протокол, и там такая замечательная функция:
                                ExpandedWrap disabled
                                  function MySuperFunction(Index: Integer): BOOL;
                                  begin
                                    raise EListIndexError.Create(Format('Invalid index: %d', [Index]));
                                  end;


                                Вопросы:
                                1. Как вызывающий код узнает, что ошибка - это ошибка индекса, и как ему получить сообщение 'Invalid index...'
                                2. Кто где и когда уничтожит мой объект класса EListIndexError, который я создал в этой функции при генерации исключения?

                                Добавлено
                                Цитата Повстанець @
                                Тюю... так причём тут СОМ?


                                COM/Ole - это протокол, который устанавливает единые правила игры. И эти правила игры мне гарантируют и то и се что я уже перечислил. Вот и притом

                                Как ты собрался ловить языковые исключения одного языка в другом? И в COM, насколько помню, используются коды ошибок, а не исключения. Так что только SEH...
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (245) « Первая ... 50 51 [52] 53 54 ...  244 245


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0787 ]   [ 14 queries used ]   [ Generated: 31.03.26, 10:16 GMT ]