Куча говна / Говнокод #25663 Ссылка на оригинал

0

  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 cmepmop, (Updated )

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

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

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

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

    if (FIsDestroying) then exit;


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

    )))
    Ответить
  • дельфи 2019? серьезно? а про вижал бейсик нету статей? а про tcl?
    Ответить
    • Поэтому я за Си. Хоть язык Си и придумали хуй знает когда, он до сих пор актуален.
      Ответить
      • Только не в прикладном программировании.
        Ответить
            • Можно в 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.

                              Но увы: веб кросс платформенен
                              Ответить
                              • 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 и кнопочек). Создаю объекты динамически.
              Ответить
              • Ну если лейауты есть - так даже удобней. Главное - чтобы координаты не вбивать.
                Ответить
  • Юникорн, как вы ЭТО едите?!
    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);
      }
      Ответить
  • Должен признаться, одному на ГК намного приятнее, чем находиться в обществе петухов, макак и горилл. Можете съебнуть хором в туман и не возвращаться.
    Поверьте мне, я не заплачу.
    Ответить

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

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8