На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (495) « Первая ... 28 29 [30] 31 32 ...  494 495  ( Перейти к последнему сообщению )  
> Delphi vs C++ vs C# , ну и Java немножко, где-то ближе к старшему байту номеров страниц
    Цитата korvin @
    Цитата KILLER @
    Да ты не кипятись так. Какой тогда прок от ваших модулей, если все что ты тут перечислил без проблем реализуется с помощью неймспейсов ??? Немспейс - содержит объявления и реализации, то есть все то что нужно.

    разве нэймспейсы в C++ уже умеют разделять интерфейс и реализацию?

    а причем тут неймспейсы? А с разделением реализации/интерфейса справляются классы с точки зрения логики и файлы и единицы трансляции с точки зрения "физики".

    Добавлено
    Цитата --Ins-- @
    Цитата korvin @
    разве нэймспейсы в C++ уже умеют разделять интерфейс и реализацию?


    Нет, ес-но, собственно C# ведь C++-ный синтаксис и тянет. Это, конечно, вопрос исключительно синтаксиса, но вопрос на самом деле серьезный. Насколько удобно иметь перед глазами отдельно объявление класса и всех его методов, чтобы реализация не путалась перед глазами. В таких случаях в 90% и документация класса не нужна. Все читаешь и понимаешь по исходникам

    Полностью согласен. Более того, я так и пишу. И это единственное, чего мне не нравится в питоне, но там по-другому и не получилось бы.

    Добавлено
    Цитата Shaggy @
    Цитата KILLER @
    DesweR, может быть ты мне пояснишь практическую ценность этих секций?

    как пример: у меня GDI+ инициализируется/финализируется в этих секциях
    т.е. просто подключил модуль и работаем

    Singleton. Отдельный объект, который отвечает за взаимодействия с низким уровнем GDI+ у тебя есть?
      Цитата D_KEY @
      А с разделением реализации/интерфейса справляются классы


      Точно так же, как лопата справляется с задачей забивания гвоздей. Да, справляется, строго говоря, только вот задача класса - это описывать объект, или содержать в себе какие-то левые функции, переменные, типы? Ты может тоже и вправду считаешь что C# - это 100% ОО-язык?
        Цитата --Ins-- @
        Ты нефига не понял :) Допустим есть необработанное исключение. Если оно возникнет, то будет вызвана специальная функция обработчик. Прикол в том, что адрес этой функции хранится в некой глобальной переменной. Возникло необработанное исключение - читаем адрес и вызываем функцию по адресу. Так вот, в модуле system.pas объявлена такая функция по-умолчанию, она показывает окошко об ошибке с текстом runtime-error. А вот модуль, скажем, SysUtils.pas назначает этой переменной адрес своей функции, которая покажет более развернутую информацию об исключении. А вот в модуле специализированной утилиты-построителя отчетов вообще может быть показан навороченный диалог со стеком вызовов и ссылкой на сайт разработчика :) Понял?
        Ну, или safecall-исключения можно по другому обрабатывать. По-умолчанию если safecall-вызов привел к исключению, то на вызываемой возбуждается EOleException. Это не всегда удобно, удобнее было бы возбудить то же исключение, что и возникло внутри модуля (если это возможно). Я когда-то писал функцию, которая это делает. Естественно ее нужно установить в initialization

        Ага, я понял теперь, у нас за это отвечают сишные функци, можно переопределить свою функцию и поставиьт ловушку, которая и будет это все ловить и обработка уже в юзеровской функции будет происходить
          Цитата KILLER @
          можно переопределить свою функцию


          Не сомневаюсь что можно. В какой момент?
            Цитата --Ins-- @
            Не сомневаюсь что можно. В какой момент?

            А в какой тебе нужно?
              Цитата KILLER @
              А в какой тебе нужно?


              Как только так сразу :)
                Цитата D_KEY @
                Singleton. Отдельный объект, который отвечает за взаимодействия с низким уровнем GDI+ у тебя есть?

                так они все взаимодействуют с низким уровнем, это просто обёртки
                т.е. ты предлагаешь завести отдельный класс для инициализации/финализации? :lol:
                  Цитата --Ins-- @
                  Как только так сразу :)

                  Ну вот берешь и ставишь ловушку в конструктор класса, в деструкторе снимаешь, но на практике я таким ниразу не пользовался, т.к. таких случаев не припомню, чтобы при инициализации переменных возникали исключения, чаще ставят такие ловушки в определеные места, чтобы локализировать ошибку и быстрее найти место где она расположена...
                    Цитата KILLER @
                    чтобы при инициализации переменных возникали исключения


                    Ты снова нифига не понял :)
                      Цитата --Ins-- @
                      Ты снова нифига не понял :)

                      ну как я понял, у вас это все назначается через SetUnhandledExceptionFilter ? Или что то наподобии этого?
                        KILLER, короче, найди любой стандартный юнит Delphi, открой и посмотри. Почти каждый имеет секцию инициализации/финализации
                          Цитата --Ins-- @
                          KILLER, короче, найди любой стандартный юнит Delphi, открой и посмотри. Почти каждый имеет секцию инициализации/финализации

                          Я верю что имеет, но сам понимаешь, глобальные переменные не айс, плюс эта секция в плюсах - тело неймспейса. Я просто думал сначало, что эти секции нужны для чего то другого...
                            Цитата --Ins-- @
                            Цитата D_KEY @
                            А с разделением реализации/интерфейса справляются классы


                            Точно так же, как лопата справляется с задачей забивания гвоздей. Да, справляется, строго говоря, только вот задача класса - это описывать объект, или содержать в себе какие-то левые функции, переменные, типы?

                            Описывать объекты. Содержать в себе какие-то левые функции, переменные, типы не нужно. Методы, статические методы, внутренние классы, поля. Только не левые, а те, которые необходимы.

                            Добавлено
                            Цитата Shaggy @
                            Цитата D_KEY @
                            Singleton. Отдельный объект, который отвечает за взаимодействия с низким уровнем GDI+ у тебя есть?

                            так они все взаимодействуют с низким уровнем, это просто обёртки
                            т.е. ты предлагаешь завести отдельный класс для инициализации/финализации? :lol:

                            Нет. Для работы с GDI+. Ты ведь решаешь какую-то задачу с помощью GDI+? Правильно?
                            Сообщение отредактировано: D_KEY -
                              Цитата D_KEY @
                              Нет. Для работы с GDI+. Ты ведь решаешь какую-то задачу с помощью GDI+? Правильно?

                              твой вариант:
                              класс без методов, в конструкторе startup, в деструкторе shutdown

                              что нужно сделать клиенту:
                              подключить библиотеку
                              в клиентском коде объявить переменную этого типа
                              работаем
                              я правильно понял?


                              мой вариант:
                              в initialization модуля startup, в finalization shutdown

                              что нужно сделать клиенту:
                              подключаем модуль
                              работаем
                                Shaggy, я о том, что эта инициализация должна делаться за кулисами того класса, который обеспечивает нужный функционал(и реализован с использованием GDI+). Если у тебя несколько классов используют низкоуровневые средства GDI+, то это ИМХО просто неправильно. Такие вещи нужно инкапсулировать. Ибо скорее всего, классы, использующие GDI+ могут успешно решать свои задачи, если будут использовать какое-то другое средство, обеспечивающее нужный функционал.
                                Сообщение отредактировано: D_KEY -
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 28 29 [30] 31 32 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.1293 ]   [ 15 queries used ]   [ Generated: 28.07.26, 23:41 GMT ]