1. Pascal / Говнокод #19582

    −52

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    procedure TDev.ScanBtnClick(Sender: TObject);
    var
      sel:tlistitem;
      drv:DriveObj;
      i:integer;
    begin
      for i:=devlist.Items.Count -1 downto 0 do
      begin
        sel:=devlist.items[i];
        if not sel.selected then continue;
        if sel.SubItems.Objects[0] is DriveObj then
        begin
          drv:=(sel.SubItems.Objects[0] as DriveObj);
          if drv.status=s_isprocessing then
          begin
            messagebox(handle,pchar('Предыдущее сканирование еще выполняется'),pchar('Ошибка'),mb_iconwarning);
            continue;
          end;
          StartScan(drv,true);
          sel.SubItems.Strings[2]:=(sel.SubItems.Objects[0] as DriveObj).statusAString;
        end;
      end;
    end;

    Из одной утилитки.
    ListView настроен на освобождение объектов при удалении айтема, слушает событие об удалении/добавлении устройств.

    Запостил: fajes_rown, 06 Марта 2016

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

    • Спасибо за интерес к моему посту.
      Вызов MessageBox не блокирует главный поток (сообщения из очереди продолжают обрабатываться). Может статься так, что за промежуток времени, пока открыт MessageBox, форма получит сообщение об удалении устройства, ListView удалит айтем с соответствующей буквой диска и при следующей итерации цикла пользователь получит AV.
      Ответить
      • У почтеннейшей публики рефлекс: если местные зрители увидят в коде слово procedure, то им кажется, что перед ними лаба.

        Отсюда мораль: если хочешь, чтобы язык программирования игнорировали, внеси его в учебную программу первого курса.
        Ответить
      • Возможно такие сообщения были, поэтому для их минимизации было решено перебирать не с начала, а с конца. Теперь AV будет в несколько раз реже - только если удаление произойдет во время обработки последнего элемента, а не любого.
        Ответить
        • а, нет, всю затею sel губит.
          Ответить
          • Так предлагал?
            for i:=devlist.Items.Count -1 downto 0 do
              begin
                if devlist.items.count =0 then exit;
                sel:=devlist.items[i];


            все равно воняет. Ну не нужен там MessageBox... Сообщение можно и в конце цикла показать.
            Ответить
            • Асинхронность, кстати, блядская штука, такие ошибки не видны на отладке, только на багах. В делфи есть ещё стоит опасаться бездумного юзанья Application.ProcessMessages, ну а таймеры не асинхронные, вроде.
              Ответить
        • > AV будет в несколько раз реже
          Т.е. замели проблему под ковёр... Делфи вей, чо.
          Ответить
          • Понятия не имею о чем вы. У меня на компе все работает. Поймаете ошибку еще раз - запишите время когда была ошибка и что точно в сообщении говорилось.
            Ответить
            • я предлагаю вообще в ошибке показывать только время. Ни стек вызовов. ни состояние переменных - только время. Труъ хардкор
              Ответить
              • Время это чтоб разработчик зашел по радмину на комп и посмотрел в логе что там в этот момент происходило. Но лог очень длинный, за секунду может и на мегабайт вырасти, поэтому очень важно точное время ошибки.
                Ответить
              • > показывать только время
                Майкрософт тебя уже опередил. Они показывают только грустный смайлик.
                Ответить
              • Не надо ничего вообще писать
                Молча закрываешь программу, и всё. Или еще лучше написать: "обратитесь к администратору"
                Ответить
                • много ли в 21 веки администраторов, которые умеют читать логи? не говоря уже о дампахх и отладке
                  Ответить
                  • А ты обротись и они прочитают. Аутисты сидят молчат, вот никто и не читает их логи.

                    Какой из инканусов с голограммой и проходит валидацию?
                    Ответить
                    • >Какой из инканусов с голограммой и проходит валидацию?

                      Это как секс с незнакомым человеком в темной комнате. По ощущениям не понять ни возраста ни пола
                      Ответить
    • И как в 2016м году живется дельфи программисту?
      Ответить
      • Ничего так, борода яйца щекочет
        Ответить
        • Книжку под них подложи: http://www.amazon.com/Mastering-Delphi-2-Windows-95/dp/0782118607
          Ответить
          • Я кстати хочу чтобы сейчас был 1997й год, и на моем Pentium 75 стояла бы Windows 95 и Delphi 2.
            Ответить
            • Хоти.
              Ответить
            • Что мешает? На мусорке поищи.
              Ответить
              • на мусорке я разве что тебя найду
                а 1997й не найду
                Ответить
                • 1997-й даже за деньги не купишь.
                  Ответить
                  • Продам_2007_год.жпег
                    Ответить
                  • купишь

                    http://www.fandom.ru/fido/su_books/msg_index1.htm
                    Ответить
                    • как писали-то люди

                      грамотно, развернуто, красиво

                      никаких тебе сраных вореций

                      нет, я решительно хочу фидо, 1997й, и borland C++ под DOS
                      и коврик для мышки
                      и игру гоблины2
                      и сануд бластер
                      и мышь двухкнопочную на ком порту
                      и пузатый 14" моник
                      и коробку дискет basf
                      и golded
                      и keyrus.com
                      Ответить
                      • Кстати, про дискеты:
                        http://secretmag.ru/topics/2016/03/23/diskety-i-kassety/
                        Ответить
                        • да и на кобыле люди пишут

                          вообще говоря это не дискеты а попса
                          хочу 5"25 на 740К
                          Ответить
                          • > пишут
                            пашут?
                            Ответить
                            • на коболе же
                              чартов тэ девять
                              Ответить
                              • Ну на кобылах всяко до сих пор пашут, хотя и устарела технология ;)
                                Ответить
                                • так ведь и на пхп пишут
                                  и сладкий хлеб едят
                                  Ответить
                                  • ПХП и сладкий хлеб никогда не устареют...
                                    Ответить
                                    • конечно

                                      сейчас в тренде руби и питон
                                      Ответить
                                      • Сорта сладкого хлебушка эти ваши руби.
                                        Ответить
                                        • руби настолько лучше пыха насколько танненбаум умнее 314дара
                                          Ответить
                          • У меня есть одна штука 5,25". Только я не помню, на 720К или на 1200К.

                            Кстати, в школе у нас были компьютеры «Агат-7» с одноголовочным дисководом. Для использования второй поверхности дискету надо было перевернуть.

                            А восьмидюймовых не видел ни разу. И Zip-дисками не выпало случая попользоваться.

                            P.S. 3,5" на 2880К тоже не видел.
                            Ответить
                            • ну а дайлап на 28800 хотя бы настраивал?
                              v34 же
                              Ответить
                            • я видел я 1 раз 8 ми дюймовую. Она по виду похожа на 5д. только больше
                              Ответить
                              • >>Она по виду похожа на 5д. только больше
                                самурай с мечом подобен самураю без меча, но только с мечом
                                Ответить
                            • Я в академию лабораторные работы на зипе носил, а по работе - фотоформы для Сайтекс цветоделителя. А еще у нас в академии на прокат были фотоаппараты с 3-дюймовой дискетой в качестве хранилища данных. Помещалось картинок 10 вроде. А еще в то время на маках для того, чтобы вынуть дискету / зип его нужно было перетащить мышкой на иконку мусорного ящика. Ходили слухи, что если жесткий диск выбросить в корзину таким образом, то компьютер навсегда перестанет работать.

                              А первый модем я подключал непосредственно разобрав телефонную розетку и прикрутив провода так, чтобы одновременно подключались и модем и телефон. Номер ISP набирал с дискового телефона, а когда слышал ответ другого модема - быстро нажимал на компе на соответствующие кнопки.
                              Ответить
                • p-75 может и найдешь. Ну я p4 нашел, но какая страна - такие и компы.
                  Ответить

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