На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Закрыто archimed7592 11-03-2008: Лимит страниц. Продолжаем Delphi vs C++

Страницы: (117) « Первая ... 11 12 [13] 14 15 ...  116 117  ( Перейти к последнему сообщению )  
> Delphi vs C++ , Часть 1
    Цитата archimed7592 @
    VC++ - это stdc++ + mfc + w32api + bla-bla-bla...
    а делфи - это делфи...

    походу я слепая раз незаметила в Дельфи тоже самого, только с другой абривиатурой :)
      Цитата Мяут @
      соответствующий класс обертка делается. в STL/Boost их аж три

      А если объект сам себя должен уметь уничтожить? Какой smart pointer для его хранения использовать?

      Цитата mo3r @
      Нет, так как он не нужен.

      IMHO, with пригодился бы, хотя сильной надобности в нём и нет.
      Сообщение отредактировано: Dantes -
        Кстати не могу асилить
        Цитата mo3r

        Кстати, это код

        ifstream file1("file1");
        ofstream file2("file2");
        //do something with file1 and file2}
        гораздо более удобен, нежели вложенные try/catch/finally...


        а при чем тут обработка ошибок??? :0\
        или данные функции, их автоматом акучат (в случае чего)?
          Цитата Dantes @
          IMHO, with пригодился бы, хотя сильной надобности в нём и нет.

          Не припомню такого, чтобы он мне когда-нибудь мог пригодиться... Никогда не возникало желания чето подобное заюзать при работе на плюсах. <_<
          Сообщение отредактировано: Stratocoder -
            Цитата джастфорфанушка @
            а при чем тут обработка ошибок??? :0\

            Обработка ошибок памяти надо полагать
              Цитата джастфорфанушка @
              или данные функции, их автоматом акучат (в случае чего)?

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

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

              Например, заполненине структуры WNDCLASSEX. С with запись получилась бы более лаконичной - зачем каждый раз указывать имя одного и того же объекта или ссылки/указателя на него?

              Добавлено
              Мяут, так что там со смарт поинтерами? :)
                Цитата Dantes @
                Мяут, так что там со смарт поинтерами? :)

                Мяут сам себя удалил
                  Цитата Dantes @
                  Например, заполненине структуры WNDCLASSEX. С with запись получилась бы более лаконичной - зачем каждый раз указывать имя одного и того же объекта или ссылки/указателя на него?

                  Ну, обозвать создаваемый класс чем-то типа wc, и расход не такой уж и большой...
                    Угу, в итоге имеем приближённую имитацию with. А наличие всяких имитаторов обычно свидетельстует о недостатке полезных возможностей на уровне языка. Да и wc у меня ассоциируется с ... м-м-м, ну вы поняли :D
                      Цитата Dantes
                      Если после открытия файла будет брошено исключение, то в процессе раскрутки стека он будет автоматически закрыт. Никаких телодвижений для этого делать не нужно. RAII - сильная вещь.

                      Ну по мне такие "если", ведущие к потери данных, есть великий косяк... Даже если на это ложить автоматом..

                      Хм.. заценил в win2k системе msvcr70.dll, от VC.NET2003, переименовав в msvcrt.dll.. То ли предвзято относился, то ли еще чего.. Такое ощущение что виндовз получше пашет. И сорцы этой RTL либы открыты. хм.. скомпилить чтоль..
                        Цитата Дьяволица @
                        базы данных не так интересно писать на с++
                        а разве легче писать на паскале? А если в дельфи есть DBкомпоненты, так и в BCB они есть.
                        А вообще прикольно было ветку читать...
                        И честно пытался вспомнить что такого есть в паскале более удобного чем в срр...
                        with я и в паскале никогда не пользовался, так что нафиг он мне в срр?
                        Какой смысл в пропертях в срр? Наличие гетеров/сетеров в классе пахнет не очень красиво, а тут еще более громоздкая конструкция...
                          Цитата Мяут @
                          Вот такая дельфистам задачка: заюзать собственный менеджер памяти. Как будете реализовывать? :whistle:

                          И вот ты опять в лужу сел :) Долго время существовало для Дельфи 2 менеджера памяти: стандартный Борландовский и FastMM. Теперь FastMM стал стандартным. И тем не менее подключить можно любой другой.
                          Цитата mo3r @
                          А что это?

                          Можно писать дополнительные функции/процедуры для уже существующих классов.

                          Например:
                          ExpandedWrap disabled
                            type
                              TRect = record
                                Left, Top, Right, Bottom Integer;
                              end;
                             
                              TRectHelper = record helper for TRect
                                function Width: Integer;
                                function Height: Integer;
                              end;
                             
                            function TRectHelper.Width: Integer;
                            begin
                              Result := Right - Left;
                            end;
                             
                            function TRectHelper.Height: Integer;
                            begin
                              Result := Bottom - Top;
                            end;
                             
                            Теперь, чтобы узнать ширину прямоугольника нужно вызвать:
                            var
                              R: TRect;
                            begin
                              R.Width;
                            ...

                          Все просто.

                          А для классов такой пример:
                          ExpandedWrap disabled
                            type
                              TObjectHelper = class helper for TObject // TObject — базовый класс в Delphi
                                function This: TObject;
                              end;
                             
                            function TObjectHelper.This: TObject;
                            begin
                              Result := Self;
                            end;


                          Предположим, есть какой-то класс SomeClass, свойство Items[Name: string] которого возвращает указатель на класс либо nil (нулевой указатель):
                          ExpandedWrap disabled
                              with SomeClass.Items['object_name'] do // а вот очередное удобное применение This
                              if Assigned(This) do // проверяем, существует ли класс
                              begin
                                // производим действия с классом
                              end;
                            Цитата Smike @
                            И вот ты опять в лужу сел
                            Молодой, горячий, опыта мало... :D


                            В общем, традиция продолжается. Чтобы добавить что-то, в C++ пишут библиотеку, а в ObjectPascal/Delphi - изменяют язык. :)
                              Цитата Dantes @
                              Угу, в итоге имеем приближённую имитацию with.

                              Это не имитация, а самостоятельный механизм.
                              Ну его нафиг, этот with с его таким неявным скрытием имен.
                              wc. - всё понятно, что откуда (да и в IDE с автозавершением имен приятней получится).

                              Цитата Smike
                              Можно писать дополнительные функции/процедуры для уже существующих классов.

                              Чисто фишка RAD - такую заплатку быстрее поставить вместо проведения нормального рефакторинга (да и вообще, в случае с TRect можно было просто написать внешние функции Width и Height).
                              Кстати, а что будет, если в одном из наследников будет определен метод с таким же именем, как из хелпера базового класса?

                              Цитата
                              if Assigned(This) do

                              Прекрасный язык - Делфи - позволяет вызывать нестатические методы у несуществующих объектов. :wacko:
                                Цитата Hryak @
                                Ну его нафиг, этот with с его таким неявным скрытием имен.

                                Уж кто бы жаловался на непрозачность кода. Знающему язык всё будет ясно. А конструкция with действительно очень полезна, ничего не попишешь.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (117) « Первая ... 11 12 [13] 14 15 ...  116 117
                                Закрыто archimed7592 11-03-2008: Лимит страниц. Продолжаем Delphi vs C++



                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0493 ]   [ 15 queries used ]   [ Generated: 15.08.25, 05:25 GMT ]