1. Си / Говнокод #25585

    0

    1. 1
    2. 2
    (cell)data += sizeof(cell) - 1;
        (cell)data &= ~(sizeof(cell) - 1);

    Блядь, ёбаный tcc! Другие конпилеры отказываются такое конпилить. Теперь дохуя переписывать.

    Запостил: Hu3KoypoBHeBblunemyx, 03 Мая 2019

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

    • Кококококой хардкор!
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • lvalue можно скастить так:
      *(cell*)&data += sizeof(cell) - 1;
      *(cell*)&data &= ~(sizeof(cell) - 1);
      Но это говно какое-то. В таком случае пельменная же зашкварится, и конпилятор не поместит её в регистр?
      Почему только tcc умеет lvalue какастить?
      Ответить
      • Гуглёжка показывает, что старые версии gcc (до 3.4) и какие-то версии MSVC умели кастить lvalue, а потом эту возможность отменили. Каст lvalue был в кокококом-то древнем черновике «ANSI C», потом кокококомитет счёл его архитектурным излишеством.
        Ответить
        • Но почему? Удобно же. Без lvalye каста получается много некрасиаой писанины:
          data = (void*)((cell)data + sizeof(cell) - 1);
          Ответить
          • Возможно, им не понравилось то, что компилятору нужно выводить обратное преобразование, которое в общем случае может не существовать или быть трудновыводимым. Напомню, что сишный каст –— это не static_cast, не reinterpret_cast, не const_cast, а более сложная конструкция, которая перебирает все эти преобразования:
            Оно по очереди пробует следующие преобразования:
            •    const_cast
            •    static_cast
            •    static_cast и затем const_cast
            •    reinterpret_cast
            •    reinterpret_cast и затем const_cast


            reinterpret_cast –— примитивщина, оно просто игнорирует тип. А вот static_cast –— самая сложная фигня. В случае чисел оно даже производит вычисления (когда нужно целого питуха приводить к плавающему или наоборот).

            Когда у тебя «много некрасивой писанины», ты фактически выполняешь за компилятор сложную работу. Они решили упростить компилятор.
            Ответить
            • Какое ещё преобразование? Каст lvalue должен быть аналогичен reinterpret_cast, всё, что нужно сделать : проверить размеры типов и работать с байтами этой переменной как с байтами другого типа. Какие преобразования имели бы там смысл? Например, какой смысл преобразовывать что-то здесь?
              int i;
              (float)i = 3.14;
              Что во что тут преобразовывать? Например tcc такое не позволяет, он позволяет кастить в lvalue только различные инты и указатели. А я считаю, что тут было бы уместно просто проверить sizeof(int) и sizeof(float) на равенство, и насрать на тип инт и позволить сохранить в нём плавающего петуха.

              Если бы такое было позволено, Кармаку не пришлось бы городить каламбуры из указателей для вычисления быстрого отвратного порня.

              > Они решили упростить компилятор.
              Ну блядь, конпиляторы ссей и крестов давно уже не простые, сколько в гцц всякого говна понапихали: expression statement, вложенные дисфункции, трамплины, typeof, автовывод типов, генерики из c11, куча атрибутов для функций и переменных, проверка всяких возможных ошипок и очепяток, допустимых в языке, но с выдачей ворнингов, ебанические оптимизации. А про кресты я вообще молчу. Не говори мне, что люди сделавшие всё это, хотят упростить компилятор.
              Ответить
    • показать все, что скрытоМне кажется, что Низкоуровневый петух - это Роман Кашицын...
      Ответить
    • показать все, что скрытоvanished
      Ответить
      • Я тоже хочу в 99-й. Хочу какать в подгузники, плакать по ночам и сосать сисю.
        Ответить
      • ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
        ▓▓▓▓▓┌──────────────────────────────────────────────────────────────────╖▓▓▓▓▓▓
        ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
        ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓╪╪╪╪╪╪╪╪░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ Москва 1997 г.▓▓▓▓▓║░░▓▓▓▓
        ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓╪╪╪╪╪╪╪╪╪╪░░▓▓▓╪╪╪╪╪╪╪╪░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
        ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓╪╪╪░░░░░╪╪╪░░▓╪╪╪╪╪╪╪╪╪╪╪░░▓▓╪╪╪░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
        ▓▓▓▓▓│▓▓▓▓▓▓▓▓╪╪╪░░▓▓▓╪╪╪░░▓╪╪╪░░░░░░╪╪╪░░▓╪╪╪░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
        ▓▓▓▓▓│▓▓▓▓▓▓▓╪╪╪╪╪╪╪╪╪╪╪░░▓╪╪╪░░▓▓▓▓╪╪╪░░▓▓░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╪╪╪╪╪╪░▓▓║░░▓▓▓▓
        ▓▓▓▓▓│▓▓▓▓▓▓╪╪╪╪╪╪╪╪╪╪╪░░▓╪╪╪░░▓▓▓▓╪╪╪░░▓╪╪╪░▓▓╪╪╪╪╪╪╪░▓▓▓▓▓▓▓╪╪╪╪╪╪░░▓▓║░░▓▓▓▓
        ▓▓▓▓▓│▓▓▓▓▓╪╪╪░░░░░╪╪╪░░▓╪╪╪░░▓▓▓▓╪╪╪░░▓╪╪╪░░▓╪╪╪╪╪╪╪╪╪░▓▓▓▓▓╪╪╪░░░░░▓▓▓║░░▓▓▓▓
        ▓▓▓▓▓│▓▓▓▓╪╪╪░░▓▓▓╪╪╪░░▓╪╪╪░░▓▓▓▓╪╪╪░░▓╪╪╪░░▓╪╪╪░░░░╪╪╪░▓▓▓▓╪╪╪░░▓▓▓▓▓▓▓║░░▓▓▓▓
        ▓▓▓▓▓│▓▓▓╪╪╪░░▓▓▓╪╪╪░░▓╪╪╪╪╪╪╪╪╪╪╪░░▓▓╪╪╪░░▓╪╪╪░░▓▓╪╪╪░░╪╪╪╪╪╪╪╪╪░▓▓▓▓▓▓║░░▓▓▓▓
        ▓▓▓▓▓│▓▓▓▓░░░▓▓▓▓▓░░░▓╪╪╪╪╪╪╪╪╪╪░░▓▓▓╪╪╪░░▓╪╪╪░░▓▓╪╪╪░░▓▓░╪╪╪░░░░▓▓▓▓▓▓▓║░░▓▓▓▓
        ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░▓▓▓╪╪╪░░▓╪╪╪░░▓▓▓╪╪╪░░▓▓╪╪╪░░▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
        ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░▓▓╪╪╪░░▓▓▓▓▓╪╪╪░░╪╪╪░░▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
        ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░▓▓▓▓▓▓▓░░░╪╪╪░░▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
        ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╪╪╪░░▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
        ▓▓▓▓▓│▓▓(c) Мостовой Дмитрий Юрьевич ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╪╪╪░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
        ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
        ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
        ▓▓▓▓▓╘══════════════════════════════════════════════════════════════════╝░░▓▓▓▓
        ▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓
        ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
        Ответить
        • показать все, что скрытоvanished
          Ответить
          • ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
            ▓▓▓▓▓┌──────────────────────────────────────────────────────────────────╖▓▓▓▓▓▓
            ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
            ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓╪╪╪╪╪╪╪╪░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ Москва 1997 г.▓▓▓▓▓║░░▓▓▓▓
            ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓╪╪╪╪╪╪╪╪╪╪░░▓▓▓╪╪╪╪╪╪╪╪░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
            ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓╪╪╪░░░░░╪╪╪░░▓╪╪╪╪╪╪╪╪╪╪╪░░▓▓╪╪╪░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
            ▓▓▓▓▓│▓▓▓▓▓▓▓▓╪╪╪░░▓▓▓╪╪╪░░▓╪╪╪░░░░░░╪╪╪░░▓╪╪╪░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
            ▓▓▓▓▓│▓▓▓▓▓▓▓╪╪╪╪╪╪╪╪╪╪╪░░▓╪╪╪░░▓▓▓▓╪╪╪░░▓▓░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╪╪╪╪╪╪░▓▓║░░▓▓▓▓
            ▓▓▓▓▓│▓▓▓▓▓▓╪╪╪╪╪╪╪╪╪╪╪░░▓╪╪╪░░▓▓▓▓╪╪╪░░▓╪╪╪░▓▓╪╪╪╪╪╪╪░▓▓▓▓▓▓▓╪╪╪╪╪╪░░▓▓║░░▓▓▓▓
            ▓▓▓▓▓│▓▓▓▓▓╪╪╪░░░░░╪╪╪░░▓╪╪╪░░▓▓▓▓╪╪╪░░▓╪╪╪░░▓╪╪╪╪╪╪╪╪╪░▓▓▓▓▓╪╪╪░░░░░▓▓▓║░░▓▓▓▓
            ▓▓▓▓▓│▓▓▓▓╪╪╪░░▓▓▓╪╪╪░░▓╪╪╪░░▓▓▓▓╪╪╪░░▓╪╪╪░░▓╪╪╪░░░░╪╪╪░▓▓▓▓╪╪╪░░▓▓▓▓▓▓▓║░░▓▓▓▓
            ▓▓▓▓▓│▓▓▓╪╪╪░░▓▓▓╪╪╪░░▓╪╪╪╪╪╪╪╪╪╪╪░░▓▓╪╪╪░░▓╪╪╪░░▓▓╪╪╪░░╪╪╪╪╪╪╪╪╪░▓▓▓▓▓▓║░░▓▓▓▓
            ▓▓▓▓▓│▓▓▓▓░░░▓▓▓▓▓░░░▓╪╪╪╪╪╪╪╪╪╪░░▓▓▓╪╪╪░░▓╪╪╪░░▓▓╪╪╪░░▓▓░╪╪╪░░░░▓▓▓▓▓▓▓║░░▓▓▓▓
            ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░▓▓▓╪╪╪░░▓╪╪╪░░▓▓▓╪╪╪░░▓▓╪╪╪░░▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
            ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░▓▓╪╪╪░░▓▓▓▓▓╪╪╪░░╪╪╪░░▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
            ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░▓▓▓▓▓▓▓░░░╪╪╪░░▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
            ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╪╪╪░░▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
            ▓▓▓▓▓│▓▓(c) Мостовой Дмитрий Юрьевич ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╪╪╪░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
            ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
            ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
            ▓▓▓▓▓╘══════════════════════════════════════════════════════════════════╝░░▓▓▓▓
            ▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓
            ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓


            Ко-кок
            Ответить
            • ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
              ▓▓▓▓▓┌──────────────────────────────────────────────────────────────────╖▓▓▓▓▓▓
              ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
              ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓╪╪╪╪╪╪╪╪░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ Москва 1997 г.▓▓▓▓▓║░░▓▓▓▓
              ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓╪╪╪╪╪╪╪╪╪╪░░▓▓▓╪╪╪╪╪╪╪╪░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
              ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓╪╪╪░░░░░╪╪╪░░▓╪╪╪╪╪╪╪╪╪╪╪░░▓▓╪╪╪░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
              ▓▓▓▓▓│▓▓▓▓▓▓▓▓╪╪╪░░▓▓▓╪╪╪░░▓╪╪╪░░░░░░╪╪╪░░▓╪╪╪░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
              ▓▓▓▓▓│▓▓▓▓▓▓▓╪╪╪╪╪╪╪╪╪╪╪░░▓╪╪╪░░▓▓▓▓╪╪╪░░▓▓░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╪╪╪╪╪╪░▓▓║░░▓▓▓▓
              ▓▓▓▓▓│▓▓▓▓▓▓╪╪╪╪╪╪╪╪╪╪╪░░▓╪╪╪░░▓▓▓▓╪╪╪░░▓╪╪╪░▓▓╪╪╪╪╪╪╪░▓▓▓▓▓▓▓╪╪╪╪╪╪░░▓▓║░░▓▓▓▓
              ▓▓▓▓▓│▓▓▓▓▓╪╪╪░░░░░╪╪╪░░▓╪╪╪░░▓▓▓▓╪╪╪░░▓╪╪╪░░▓╪╪╪╪╪╪╪╪╪░▓▓▓▓▓╪╪╪░░░░░▓▓▓║░░▓▓▓▓
              ▓▓▓▓▓│▓▓▓▓╪╪╪░░▓▓▓╪╪╪░░▓╪╪╪░░▓▓▓▓╪╪╪░░▓╪╪╪░░▓╪╪╪░░░░╪╪╪░▓▓▓▓╪╪╪░░▓▓▓▓▓▓▓║░░▓▓▓▓
              ▓▓▓▓▓│▓▓▓╪╪╪░░▓▓▓╪╪╪░░▓╪╪╪╪╪╪╪╪╪╪╪░░▓▓╪╪╪░░▓╪╪╪░░▓▓╪╪╪░░╪╪╪╪╪╪╪╪╪░▓▓▓▓▓▓║░░▓▓▓▓
              ▓▓▓▓▓│▓▓▓▓░░░▓▓▓▓▓░░░▓╪╪╪╪╪╪╪╪╪╪░░▓▓▓╪╪╪░░▓╪╪╪░░▓▓╪╪╪░░▓▓░╪╪╪░░░░▓▓▓▓▓▓▓║░░▓▓▓▓
              ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░▓▓▓╪╪╪░░▓╪╪╪░░▓▓▓╪╪╪░░▓▓╪╪╪░░▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
              ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░▓▓╪╪╪░░▓▓▓▓▓╪╪╪░░╪╪╪░░▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
              ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░▓▓▓▓▓▓▓░░░╪╪╪░░▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
              ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╪╪╪░░▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
              ▓▓▓▓▓│▓▓(c) Мостовой Дмитрий Юрьевич ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╪╪╪░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
              ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
              ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
              ▓▓▓▓▓╘══════════════════════════════════════════════════════════════════╝░░▓▓▓▓
              ▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓
              ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
              Ответить
              • ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
                ▓▓▓▓▓┌──────────────────────────────────────────────────────────────────╖▓▓▓▓▓▓
                ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
                ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓╪╪╪╪╪╪╪╪░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ Москва 1997 г.▓▓▓▓▓║░░▓▓▓▓
                ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓╪╪╪╪╪╪╪╪╪╪░░▓▓▓╪╪╪╪╪╪╪╪░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
                ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓╪╪╪░░░░░╪╪╪░░▓╪╪╪╪╪╪╪╪╪╪╪░░▓▓╪╪╪░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
                ▓▓▓▓▓│▓▓▓▓▓▓▓▓╪╪╪░░▓▓▓╪╪╪░░▓╪╪╪░░░░░░╪╪╪░░▓╪╪╪░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
                ▓▓▓▓▓│▓▓▓▓▓▓▓╪╪╪╪╪╪╪╪╪╪╪░░▓╪╪╪░░▓▓▓▓╪╪╪░░▓▓░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╪╪╪╪╪╪░▓▓║░░▓▓▓▓
                ▓▓▓▓▓│▓▓▓▓▓▓╪╪╪╪╪╪╪╪╪╪╪░░▓╪╪╪░░▓▓▓▓╪╪╪░░▓╪╪╪░▓▓╪╪╪╪╪╪╪░▓▓▓▓▓▓▓╪╪╪╪╪╪░░▓▓║░░▓▓▓▓
                ▓▓▓▓▓│▓▓▓▓▓╪╪╪░░░░░╪╪╪░░▓╪╪╪░░▓▓▓▓╪╪╪░░▓╪╪╪░░▓╪╪╪╪╪╪╪╪╪░▓▓▓▓▓╪╪╪░░░░░▓▓▓║░░▓▓▓▓
                ▓▓▓▓▓│▓▓▓▓╪╪╪░░▓▓▓╪╪╪░░▓╪╪╪░░▓▓▓▓╪╪╪░░▓╪╪╪░░▓╪╪╪░░░░╪╪╪░▓▓▓▓╪╪╪░░▓▓▓▓▓▓▓║░░▓▓▓▓
                ▓▓▓▓▓│▓▓▓╪╪╪░░▓▓▓╪╪╪░░▓╪╪╪╪╪╪╪╪╪╪╪░░▓▓╪╪╪░░▓╪╪╪░░▓▓╪╪╪░░╪╪╪╪╪╪╪╪╪░▓▓▓▓▓▓║░░▓▓▓▓
                ▓▓▓▓▓│▓▓▓▓░░░▓▓▓▓▓░░░▓╪╪╪╪╪╪╪╪╪╪░░▓▓▓╪╪╪░░▓╪╪╪░░▓▓╪╪╪░░▓▓░╪╪╪░░░░▓▓▓▓▓▓▓║░░▓▓▓▓
                ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░▓▓▓╪╪╪░░▓╪╪╪░░▓▓▓╪╪╪░░▓▓╪╪╪░░▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
                ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░▓▓╪╪╪░░▓▓▓▓▓╪╪╪░░╪╪╪░░▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
                ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░▓▓▓▓▓▓▓░░░╪╪╪░░▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
                ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╪╪╪░░▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
                ▓▓▓▓▓│▓▓(c) Мостовой Дмитрий Юрьевич ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╪╪╪░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
                ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
                ▓▓▓▓▓│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓║░░▓▓▓▓
                ▓▓▓▓▓╘══════════════════════════════════════════════════════════════════╝░░▓▓▓▓
                ▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓
                ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
                Ответить
              • Я на тебя пиздец зол
                Ответить
      • VC  Version 4.99.06 alpha
                    Copyright (C) Vsevolod V. Volkov 1991-1998
        
        
        This is a TEST  version of the Commander which is preliminary in
        design.  You should not use it for normal work. Any features may
        be  changed between now and the final release. Please report any
        bugs that you find to me.
        
        The Volkov Commander is a DOS  program, but it supports a lot of
        features in Windows 95 and OS/2.
        
        --- поскипал часть текста ---
        
        Where You can find the latest versions and information:
        FTP sites:
        
        ftp.topaz.kiev.ua/pub/vc - Kiev, Ukraine
        ftp.elf.stuba.sk/pub/pc/utilfile - Bratislava, Slovakia
        ftp.uakom.sk/pub/mirrors/sac/utilfile - Banska Bystrica, Slovakia
        ftp.vse.cz/pub/msdos/SAC/pc/utilfile - Prague, Czech Republic
        ftp-beer.bke.hu/vol1/pub/sac/pc/utilfile - Budapest, Hungary
        ftp.cs.tu-berlin.de/pub/msdos/mirrors/stuba/pc/utilfile - Berlin, Germany
        ftp.pwr.wroc.pl/pub/pc/sac/utilfile - Wroclaw, Poland
        cert.unisa.it/pub/PC/SAC/utilfile - Salerno, Italy
        ftp2.itb.it/pub/PC/SAC/utilfile - Italy
        ftp.nsysu.edu.tw/PC/SAC/utilfile - Taiwan
        ftp.cdrom.com/pub/sac/utilfile - U.S.A.
        
        WWW sites:
        
        http://come.to/volkov - Official German homepage
        http://hjem.get2net.dk/fec/volkov/volkov.html - Unofficial site
        http://www.kki.net.pl/volkov - Polish page
        ----------------------------------------------------------------
        
        Vsevolod V. Volkov                                 Kiev, Ukraine
        
        Homepage: http://come.to/volkov
        Internet: [email protected]
        Fidonet:  2:463/62.16, 2:463/80.18
        Phone:    380-44-4842542                  Monday through Friday,
                                       7pm-10pm Kiev time (+2 hours GMT)
        
        
                                  14-May-1998
        Ответить
      • **********************************************************************
             AntiViral Toolkit Pro by Eugene Kaspersky для Windows 95/98/NT.
                           Версия 3.0 Build 132, Platinum Edition
                     (С) ЗАО "Лаборатория Касперского". Октябрь 1999 года 
        **********************************************************************
        КАК ЛУЧШЕ ПОЛЬЗОВАТЬСЯ ЭТИМ ДОКУМЕНТОМ
        --------------------------------------
        Чтобы просмотреть содержимое файла README.TXT на экране необходимо воспользоваться программой Windows 95/98 Блокнот (Notepad) или редактором WordPad. Для удобства чтения документа в программе Блокнот (Notepad) включите опцию «Перенос по словам» («Word Wrap»).
        
        Для того, чтобы распечатать README.TXT под управлением Notepad или WordPad выберите «Печать» в меню Файл.
        **********************************************************************
             	
        Вам предлагается очередная версия профессионального антивирусного пакета AntiViral Toolkit Pro by Eugene Kaspersky for Windows 95/98/NT версия 3.0 build 132, Platinum Edition.
        
        	Эта программа - новый шаг в борьбе с компьютерными вирусами. Она представляет из себя полностью 32-х битное приложение, оптимизированное для работы в операционных средах Windows 95/98/NT и использующее все возможности, которые они предоставляют.
        
        	Программа имеет удобный пользовательский интерфейс, характерный для среды Windows 95/98, большое количество настроек, выбираемых пользователем, а также одну из самых больших в мире антивирусных баз.
        
        В ходе работы AVP сканирует:
        	- Оперативную память.
        	- Файлы, включая архивные и упакованные.
        	- Системные сектора, содержащие Master Boot Record, загрузочный сектор (Boot-сектор) и таблицу разбиения диска (Partition Table).
        Ответить
        • Распространение новых антивирусных баз
          --------------------------------------
          
          Новые антивирусные базы появляются примерно один раз в неделю. В них
          включается информация обо всех вирусах, появившихся за это время, и
          расширенный лечащий модуль для этих вирусов.  Данные базы распространяются
          бесплатно и доступны на станциях BBS, ftp и через Internet:
          
          E-mail conferences 
          ==================
          relcom.comp.virus Russia
          alt.comp.virus comp.virus/virus-l compuserve
          
          FidoNet
          =======
          AVP.SUPPORT Russia
          VIRUS.POL Poland (+ dedicated fileecho AVP.POL)
          
          FTP Servers 
          ===========
          ftp://ftp.ontinet.com
          ftp://ftp.polbox.com.pl/library/!avp/
          ftp://volftp.tin.it/pub2/avp
          ftp://ftp.avp.tm
          ftp://ftp.antivirus.com.au
          
          WWW-Sites
          =========
          http://www.avp.ru  
          http://www.avp.com
          http://www.avp.ch/ (Switzerland)
          http://www.usa.avp.ch/ (U.S. backup site)
          http://www.avp.it
          http://www.scandsecure.se
          http://www.ontinet.com/
          http://www.polbox.com.pl/vacimex/     
          http://www.et.put.poznan.pl/~michal
          http://www.avpro.de
          http://www.fuhs.de
          http://www.avp-france.com     
          http://www.datarescue.com
          http://www.avp.tm
          http://www.antivirus.com.au
          
          BBSs   
          ====
          France:  +33 (1) 60 17 60 37;
          Germany: +49 611 1860569 AVP Suport Box (28.8k V.34, 8,N,1)
                   +49 36424-56512 (v.32bis/terbo/V.FC/V.34 )
                   +49 36424-56513 (v.32bis/terbo/V.FC/V.34 
          Poland:  +48-(0)22 6656363 (25+ lines VFC/V.34)
          Russia:  +7 (095) 948-6333; +7 (095) 948-3601;
          Ответить
          • Поддержка пользователей
                                 -----------------------
            
            ЗАО "Лаборатория Касперского" предлагает легальным пользователям большой комплекс услуг по поддержке своего продукта, поможет ответить на любые Ваши вопросы и использовать AVP с большой эффективностью.
            В России техническая поддержка оказывается:
            
            - в ЗАО "Лаборатория Касперского"
            
            Адрес            : 123363, Москва, ул. Героев Панфиловцев, дом № 10.
            Телефон          : (095) 495-0300, 948-4331.
            Факс             : (095) 948-4331.
            Электронный адрес: [email protected].
            BBS              : (095) 948-6333, (095) 948-3601 (24 часа).
            FidoNet          : 2:5020/156.
            Internet         : http://www.avp.ru.
            
            Техническая поддержка также оказывается и дистрибьюторами ЗАО "Лаборатория Касперского", полный список которых находится ниже.
            
            Более подробную информацию см. в системе помощи по работе AVP (Help-файле).
            Ответить
          • показать все, что скрытоvanished
            Ответить
      • Для того, чтобы использопать этот класс, следует скопировать модуль DDCaiivas.pas ц катГлог Lib, который находится ц
        каталоге Delphi 2.0, или и другой каталог, обозначенный ц пути поиска библиотеки.
        
        Помните ли вы злополучное взаимное исключение Win 1 б, которое приостанаилипает многозадачную работу? Хорошо, я
        еще раз подчеркну необходимость освобождения DC. Класс TDDCanvas имеет и использует в своих целях метод Release.
        Всегда заворачивайте любой доступ к полотну в блок try..finally, например:
        
        try
        
        DDCanvas.TextOut( 0, 0, 'Hello Flipping World!' ) ;
        ( и т.д. )
        finally
        
        DDCanvas. Release ;
        end ;
        
        Или, как я часто делаю, используйте конструкцию with для того, чтобы сэкономить время набора:
        
        with DDCanvas do try
        
        TextOuK 0, 0, 'Hello Withering World!' ) ;
        ( и т.д. }
        finally
        
        Release ;
        end ;
        
        Итак, теперь вы можете добавить пару таких полотен в объявления формы, создавая их в FormShow, например:
        
        { создать два TDDCanvas для наших двух поверхностей }
        PrimaryCanvas : = TDDCanvas . Create ( PrimarySurface ) ;
        BackCanvas : = TDDCanvas , Create ( BackBuffer ) ;
        
        Освободите их в FormDestroy перед тем, как освободить поверхности:
        
        { освободить объекты TDDCanvas перед освобождением поверхностей }
        PrimaryCanvas. Free ;
        BackCanvas. Free ;
        
        Теперь можно осуществлять вывод либо на основную поверхность, либо на фоновый буфер, просто применяя эти пол-
        отна. Таким образом, вы изменяете DrawSurfacesдля их использования, значительно упрощая код, что продемонстрировано
        в листинге 32.16.
        Ответить
    • не насилуйте мне глаза "конпилером" и "конпилить",пожалуйста.
      Ответить
    • показать все, что скрытоВышел на охоту за живчиками, проверьте.
      Ответить
    • Ну как, переписал?
      Ответить

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