1. Куча / Говнокод #25663

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    https://habr.com/ru/post/219685/
    |
    ->
    Плохо выразился. В старых не надо объявлять поле типа Pointer, в старых объявляется поле интерфейсного типа, а при присвоении ему значения делается приведение: Pointer(FInterfaceField) := Pointer(InterfaceVariable);
    Так делали, чтобы получить weak-ссылку и при этом не заниматься многочисленными приведением Pointer к интерфейсу.
    Не будет никакого AV, если вы руками присвоите nil в деструкторе, тоже через приведение к Pointer.

    Ох, лол...

    Запостил: cmepmop, 05 Июня 2019

    Комментарии (70) RSS

    • Примечательно, что никто не минуснул. Наверно, никто не разобрался в коде.

      Вот ещё - просто ангельский лепет:

      Но здесь хоть можно подумать цикл зависимостей блокировок и доказать корректность кода, а что делать с конструкцией

      if (FIsDestroying) then exit;


      "Всё, начиная от этого условия до конца деструктора (до момента, когда будет обнулён указатель в IWeakly), нужно оборачивать с критическую секцию? И получение указателя из IWeakly — тоже в этой секции? Иначе возникнет ситуация, когда нотификация начала обрабатываться, и деструктор уже прошёл этот if"

      )))
      Ответить
    • дельфи 2019? серьезно? а про вижал бейсик нету статей? а про tcl?
      Ответить
      • Поэтому я за Си. Хоть язык Си и придумали хуй знает когда, он до сих пор актуален.
        Ответить
        • Только не в прикладном программировании.
          Ответить
          • define прикладное программирование
            Ответить
            • Формошлёпство.
              Ответить
              • Можно в GTK на сишечке формошлепить.
                Или под шиндошс дергать CreateWindowEx из сишечки и кнопки через какую-то там жопу тоже рисовать, всякая там GDI поебень еще есть
                Ответить
                • Ну я и на асме формошлепил для какой-то лабы... Но всё-таки для прикладнухи есть более удобные языки.
                  Ответить
                • формошлепать под винду рекомендую на C#/WPF
                  Ответить
                  • Ага, чтоб потом эта хуйня нигде кроме винды не заработала. Вендорлокнуть
                    Ответить
                    • Ты веришь в хороший кроссплатформенный гуй?
                      Ответить
                    • А типа твой код с CreateWindowEx заработает?
                      Ответить
                      • В вайне заработает. А хуйня с C#/WPF ни в каких вайнах не заработает, Mono этот ваш WPF не поддерживает, .NET Core его поддерживает только на винде
                        Ответить
                        • в вайне заработает, хотя и через жопо. Это не продакшен-реди решение.

                          Но вообще надо опеределить требования.
                          Формошлепить под винду (и только под винду!!) лучше в C#/WPF.
                          Формошлепить кросс-платформенно безопаснее на каком-нить QT или Swing.

                          Дельфи кстати как на линуксе работает?
                          Ответить
                          • > Формошлепить под винду (и только под винду!!) лучше в C#/WPF.

                            Формошлепить под конкретную ОС это вообще хуевая идея. Когда-нибудь твой софт захотят под Mac или в прыщах, и тогда всё твое формошлепство надо будет переписывать на какое-то другое говно.
                            Ответить
                            • А сишка есть везде (но это совсем не повод писать всё подряд на ней).
                              Ответить
                              • Блять, Борманд, секунд 30 пытался стереть эту твою точку
                                Ответить
                              • А ты на работе тимлид или рядовой?
                                Ответить
                                • > тимлид
                                  Не, там социальные навыки надо. Да и ответственность. А я лучше с кодом поговорю...
                                  Ответить
                            • Но во-первых так часто делают (например нативные прикладухи под ios, android и винду)

                              Во-вторых иногда ты точно знаешь что твой софт нужен только на винде (например ты шлепаешь редактор уровней для своей игры под DirectX или для своего антивируса)

                              И наконец формошлепить кроссплатформенно СЛОЖНЕЕ.
                              Серьезный сложный ГУИ кроссплатформенно без special case не сделать.

                              Так что ты должен решить стоит ли игра свеч.
                              Ответить
                              • Он просто не шарит, а пиздит с умным видом. Логику можно вынести в сишную или плюсовую либу, так иногда делают, но кроссплатформенный UI можно нормально сделать только для двух кнопок и одного текстфилда
                                Ответить
                                • Можно еще сделать UI который будет одинаково хуёво смотреться на всех платформах.

                                  Либо UI который будет выглядеть как в 1997 году.
                                  Ответить
                        • https://stackoverflow.com/a/27940964 хотя через какую-то жопу можно и WPF под вайном запускать.
                          Что касается Winforms, то в Mono эта хуйня есть нативно
                          https://github.com/mono/mono/blob/master/mcs/class/System.Windows.Forms/System.Windows.Forms/XplatUI.cs#L512

                          Для кроссплатформенной гуйни на шарпах я б лучше взял https://github.com/AvaloniaUI/Avalonia
                          но вообще мне не нравятся эти ваши шарпы и жабки всякие
                          Ответить
                          • Можно еще сделать вебморду и рендерить ее в ближайшем браузере.

                            Имхо формошлепствовать лучше на чем-то высокоуровневом. Это же не тяжелый бекенд писать
                            Ответить
                            • Ты так электрон придумаешь.
                              Ответить
                              • Веб довольно хуевый способ построения UI.
                                Хуже только Swing.

                                Но увы: веб кросс платформенен
                                Ответить
                              • Долой жопаскрипт. Даешь окамль! https://github.com/revery-ui/revery


                                Revery is built with reasonml, which is a javascript-like syntax on top of OCaml This means that the language is accessible to JS developers.
                                Ответить
                                • type schoolPerson = Teacher | Director | Student(string);
                                  
                                  let greeting = person =>
                                    switch (person) {
                                    | Teacher => "Hey Professor!"
                                    | Director => "Hello Director."
                                    | Student("Richard") => "Still here Ricky?"
                                    | Student(anyOtherName) => "Hey, " ++ anyOtherName ++ "."
                                    };

                                  На что это похоже?
                                  Ответить
                        • Кстати, да. Прибитые гвоздями СгеатеШипьош и DLGTEMPLATE более портабельны, чем кроссплатформенность по майкософтовски.
                          Ответить
                          • WPF никто не обещал кроссплотформенность
                            Ответить
                            • Всё по Оруэллу

                              Мировой суд участка №91 Тольятти (Самарская область) признал активиста Сергея Ионова виновным по ст. 20.33 КоАП ("Осуществление деятельности на территории РФ иностранной или международной неправительственной организации, в отношении которой принято решение о признании нежелательной на территории РФ ее деятельности"), сообщил корреспондент Каспаров.Ru 6 июня.

                              На своей странице в Facebook Ионов сделал репост двух картинок: одна с рисунком обещания президента Владимира Путина по ипотеке 2016 года, другая — про обещания премьер-министра Дмитрия Медведева о полной газификации РФ.
                              Ответить
              • @Формошлёпство.

                Кстати, заметил, что уже давно не использую визуальные компоненты (кроме контролов, вроде TEdit и кнопочек). Создаю объекты динамически.
                Ответить
                • Ну если лейауты есть - так даже удобней. Главное - чтобы координаты не вбивать.
                  Ответить
      • Про {Tcl} есть:
        https://habr.com/ru/post/453164/

        и он вполне себе живёт да здравствует.
        Ответить
    • Юникорн, как вы ЭТО едите?!
      const withIter = {
          [Symbol.iterator]() {
              return {
                  step: 0,
                  next() {
                      return {done: (this.step++ > 20), value: this.step}
                  }
              }
          }
      };
      
      for(let q of withIter) {
          console.warn(q);
      }
      Ответить
      • Почему ты пишешь в рандомных тредах?
        Ответить
      • > Юникорн
        - Юникрон Мегатрон Оптимус Прайм Бамблби
        Ответить
      • Я не знаю, зачем вы явно возвращаете интерфейс класса Generator... (Может вам ещё и итератор руками запускать через while?) Итерируемый объект...
        const myIterableObject = {
        	*[Symbol.iterator]() {
        		var step = 0;
        
        		while(step++ < 21)
        			yield step;
        	}
        };
        
        for(const q of myIterableObject) {
        	console.warn(q);
        }


        Функция-генератор...
        function* from1To21Gen() {
        	var step = 0;
        
        	while(step++ < 21)
        		yield step;
        };
        
        for(const q of from1To21Gen()) {
        	console.warn(q);
        }
        Ответить
    • Визуалпоскальпроблемы.
      Ответить

    Добавить комментарий