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

    +95

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    // со времен Delphi 7.
    procedure TfrmMain.AppDeactivate(Sender: TObject);
    begin
      OpenClipboard(0);
      if (IsClipboardFormatAvailable(CF_TEXT)) then SetClipboardData(CF_LOCALE, 0);
      CloseClipboard();
    end;

    Полагаю, большинство в курсе, что при копировании русского текста из приложения, написанного на дельфи, в другое приложение иногда копируются кракозябры.
    Это происходит, когда при копировании НЕ выбрана русская раскладка клавиатуры.

    Удалось вылечить так.

    Запостил: ctm, 10 Января 2012

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

    • Мне похрен, я пишу на ВинАПИ напрямую, у моих программ всё копируется чётко, потому что я CreateWindowW
      Ответить
    • Спасибо борланду за это.
      Ответить
    • Может таки проще TClipboard подпатчить?
      Ответить
      • ну вроде как неэтично менять стандартные модули...
        Ответить
        • почему нет? определенно баг
          Ответить
          • там не только этот баг.
            например, взять комбобокс, установить стиль csDropDownList, добавить итем пустую строку. запускаем, выбиаем его - падает ошибка в nt.dll. Помогает добавление строки " ". тоже баг.
            может и стоит поменять, останавливает то, что на другой машине (где забыли поменять оригинальные модули) билдим - падать будет.
            Ответить
            • четное количество багов нельзя фиксить? :-)
              Ответить
              • Нет нет, ты что! Поверье есть такое - если чётное количество багов пофиксишь, потом ни одна прога не откомпилируется! Поэтому все суеверные добавляют в программу ещё один баг, чтобы их число было нечётным и только тогда фиксят.
                Ответить
                • ... семь лет компилиться не будет
                  Ответить
                • еще:
                  выложить обновление в пятницу вечером - очень плохая примета
                  Ответить
                  • синтаксически можно спрятать старый класс и подсунуть поправленный
                    или detour, если внутри откомпиленного
                    Ответить
                  • У одной конторы обязательный бекап за пол часа-час до окончания работы по пятницам, остальные дни - по желанию.
                    Понедельник начинается с адреналина.
                    Ответить
                    • мы работали с 50+ предприятиями с централизованным обновлением (но присылается по почте - политика их компании, ничо не поделаешь). И вот обязательно найдется 1-2 у которых все не как у всех прочих.
                      да, забыл сказать - установка обновления - сделать бекап, 2 раза кликнуть на вложенный файл (контрольная сумма есть, были случаи), нажать "установить". и в каждом письме это написано было.
                      И при этом бекапы - четверть из них годами не бекапила ничего, но с другой стороны это не наша зона ответственности, мы же их предупредили:)
                      Ответить
                      • Я с ходу подумал, что сырцы таким образом расползаются :-o
                        FreeBSDelphi.xbm
                        Ответить
    • > Delphi 7
      Экий же вы некрофил, батенька! Посмотрите в окно, 2012 год на дворе!
      Ответить

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