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

    +76

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    SetCurrentDir(ExtractFileDir(Application.ExeName)); 
    try
    ADOConnection1.Connected:=true;
    if ADOConnection1.Connected=true then
    begin
      ADOTable1.Active:=True;
    end;
    except
      MessageDLG('Îøèáêà ïîäêëþ÷åíèÿ ÁÄ',mtError,[mbOk],0);
    end;

    SetCurrentDir(ExtractFileDir(Application .ExeName));
    Не знаю, откуда ты, но знаю, куда тебе дальше.

    Запостил: Stertor, 03 Декабря 2013

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

    • > SetCurrentDir(ExtractFileDir(Application .ExeName));
      Что тут не так? Проги не всегда стартуют с текущей папкой там, где лежит прога. Автор столкнулся с этой ситуацией, и попытался как-то решить эту проблему ;)
      Ответить
      • > Проги не всегда стартуют с текущей папкой там, где лежит прога.

        Поэтому к ресурсам всегда надо доступасться по абсолютному пути.

        А пользователя каждый раз в open file диалоге кидать в програм файлс всегда было криво.
        Ответить
        • >>А пользователя каждый раз в open file диалоге кидать в програм файлс всегда было криво.

          Товарищ в курсе, что последняя директория, к которой обращался диалог, кешируется в виде строки в реестре?
          Ответить
          • А если программа переносимая? В програм файлс вроде некультурно, культурнее в документы.
            Ответить
            • Если не патчить системные библиотеки, то тоже.
              Ответить
              • Судя по MSDN, это в семерке такое поведение прикрутили:
                Windows 7:

                If lpstrInitialDir has the same value as was passed the first time the application used an Open or Save As dialog box, the path most recently selected by the user is used as the initial directory.


                Как его перебивать - непонятно :(
                Ответить
                • если речь о Delphi - там можно указывать диалогу, какую папку открывать.
                  Ответить
                  • И оно в семерке перебивает закешированное значение? Или все же если юзер указал другую папку, то ее и показывает?
                    Ответить
                    • Ну, вроде бы да. Видимо, диалог смотрит, не задано ли значение юзером: если задано, открывает его, если нет - открывает последний путь кешированный. Если же и он не указан, открывает папку с документами.
                      Ответить
                      • Ни хуя - только что проверил. Указанный юзером путь(в свойстве opendialog.Initialdir) НЕ кешируется.
                        Ответить
                      • А проверь, кстати. Потому что MSDN говорит, что в семерке алгоритм поменяли - сначала кешированное (если прога предлагает тот же начальный путь, что и в прошлый раз), затем путь от файла, затем начальный путь, который передала прога, затем документы.
                        Ответить
                        • >>И оно в семерке перебивает закешированное значение?
                          Да, перебивает:
                          procedure TForm1.Button1Click(Sender: TObject);
                          begin
                            opendialog1.InitialDir:='C:\temp\'
                            opendialog1.Execute; // откроется папка C:\temp
                          end;

                          если пользователь ничего не выбрал в диалоге, то ничего не кешируется, после перезапуска проги диалог будет открывать последний кешированный путь или путь по умолчанию (в winXP - C:\, в семерке - My Documents)
                          Ответить
      • Для консольных прог это по любому плохо, т.к. юзер параметром может передать имя файла из текущего каталога.
        Ответить
        • > TForm1
          > параметром
          > консольные проги
          > дельфин
          > унылость
          > cp-1252
          > ADO
          > горечь бытия
          Ответить
          • Еще винду забыл ;)

            > винда
            В винде же грязные консолечки и православный гуй отделили, пометив их флагами. И поэтому гуишная прога не может адекватно срать в консоль (хотя может запилить новую). А консольная всегда стартует с терминалом, даже если ее тупо по значку на рабочем столе запускать... Или я туплю, и там давным давно все нормально? :)
            Ответить
            • А что в этом ненормального? Почему любая прога должна иметь ко-ко-консолечку?
              Ответить
              • > Почему любая прога должна иметь ко-ко-консолечку?
                Да в том и суть, что она не должна иметь ко-ко-консолечку. В никсах же ни одна прога ее не имеет, и все довольны ;) Запускаешь прогу из иксов - ничего лишнего не показывается. Запускаешь из консолечки - вот тебе stderr, изучай. Это только в винде консолечки самопроизвольно возникают :P

                У них есть просто stderr/stdout/stdin. И у виндовых прог тоже есть возможность передать дочерней проге эти три хендла при вызове CreateProcess. Но какого то хуя прога без флага ко-ко-консолечки игнорит эти хендлы, даже если я хочу их поюзать (иногда удобно читать лог в ко-консолечке в реальном времени, tail же, блеать, в винде не предусмотрен, и на целевую машину не всегда можно ставить что-нибудь для просмотра лога). А если поставить флаг ко-ко-консолечки, то у проги отрастет чорная ко-консолечка, которую ну никак нельзя убрать. И она будет бесить юзера.

                Вот и приходится велосипедить отдельное окно для просмотра логов (или открывать отдельную консолечку по команде из меню)...

                P.S. И не предлагай юзать стандартную лог-систему винды (пуск-администрирование-просмотр событий). Это говно на семерках и 2008х так тормозило, что я 30 раз успевал открыть лог ноутпадом и прокрутить в конец ;) На сраных 100к записей оно лагало даже на восьмиядерке с дохуягигами памяти... Хотя может быть я не умею его готовить? :)
                Ответить
                • >отдельное окно для просмотра логов
                  Ну так обычно и делают.

                  > стандартную лог-систему винды
                  Не переносимо же (запустил хак-прогу, а она в общий лог нагадила).

                  Просто привыкните к тому, что шинда - не линупс. Если бы еще питоноблядям это обьяснить.
                  Ответить
                • >>P.S. И не предлагай юзать стандартную лог-систему винды
                  ...если не хотите стать жертвой тролля
                  Ответить
                • Консолечку в срачало -
                  Начинай с начала.

                  Как меня бесит, что в консоли винды стирается вся история лога кроме последних строк.
                  Ответить
                  • > Как меня бесит, что в консоли винды стирается вся история лога кроме последних строк.
                    Ты так говоришь, как-будто в линухе буфер консоли бесконечен. Выкрути у виндовой консоли размер буфера в район 1000-2000 строк, и будет тебе счастье.

                    Или ты про стрелку вверх? С ней да, жопа. После закрытия консольки вся история теряется.

                    Но жопа с копированием/вставкой (да, я знаю, что можно перенастроить на выделение по клику) бесит гораздо больше ;)
                    Ответить
                    • >Ты так говоришь, как-будто в линухе буфер консоли бесконечен.
                      В konsole можно указывать бесконечный, но он все равно будет ограничен размером /tmp
                      Ответить
                  • Решение есть - tee в файл, если исчезло из консоли - читаешь в файле. Упс, а в винде то tee нету...

                    А есть в винде вообще нормальная консоль, с табами, юникодом и нормальным выделением?
                    Ответить
                    • >А есть в винде вообще нормальная консоль
                      Откуда? Там консоль вообще нельзя растянуть в ширину, только 80x25. Причем и для их новомодного powershell
                      Ответить
                      • > только 80x25
                        WAT? Ну растянуть мышкой нельзя, но другой размер вполне так ставится. То что некоторые проги, рисующие напрямую в консоль, не могут работать не на 80 - это вопрос к прогам, не к винде.
                        Ответить
                      • Работал в Винде с PuTTY из консоли, растянутой, как жопа Кирка, т. е. на весь экран. ЧЯДНТ?
                        Ответить
                        • P.S. Ошибся, это была не консоль. А у cmd.exe ширина спокойно до 160 меняется через менюшку окна консоли. И даже FAR оттуда с таким разрешением запустить можно.
                          Ответить
                      • Когда мне нужна ЗДОРОВЕННАЯ соснуль моей мечты, я запускаю в обычной wmic, растягиваю как мне надо, потом wmic убиваю.
                        cls && PROFIT!
                        Ответить
                        • Что за wmic?
                          Ответить
                          • Программа командной строки инструментария управления Windows (WMI). Но это по секрету и только для тех, кого забанили в гуголе.
                            Ответить
                            • Первый раз слышу. Чем она отличается от powershell?
                              Ответить
                              • Ну, всем, например? Чем отличается холодильник от табуретки?
                                Ответить
                                • И то и то консоль, или нет? ЧЕм вмик занимается?
                                  Ответить
                                  • И холодильник, и табуретка - предметы интерьера.
                                    wmic нужен для выполнения WQL, большей частью. И работы (часто более удобной, чем позволяют командлеты powershell) с пространством WMI.
                                    Ответить
                                    • А что за wmi? В первый раз слышу (то есть слышал, но не больше)
                                      Ответить
                                      • > инструментария управления Windows (WMI)
                                        Прости, у меня нет таланта к обучению других, попробуй найти иного консультанта.
                                        А так, в своей практике я использовал, мне норм.
                                        Ответить
                                        • У тебя не таланта нет, а мозгов, чтобы в 2 словах обьяснить, что это.
                                          Ответить
                                          • Таки это говог'ит человек^Wпоц,котог'ый не умеет гуглить.
                                            Ответить
                                            • Я загуглил - вроде это тоже консоль.
                                              Ответить
                                              • Ага, GDI не использует; Alt+Enter работает; локальное меню такое же, как у любой консоли; байт по смещению 5Ch от начала PE-заголовка равен 3, что означает console. Итого: обычная консоль.
                                                Ответить
                      • > Там консоль вообще нельзя растянуть в ширину, только 80x25.
                        Неправда. Правой кнопкой по заголовку → Умолчания → Размер. А если надо для конкретной, то вместо умолчаний свойства.
                        Ответить
                        • новая виндовая сосноль не умеет в фулскрин и масштабирование ктрл и +/-. хочется уе**ть
                          Ответить
                          • >не умеет в фулскрин
                            Alt-Enter, алсо наафига?
                            Ответить
                            • ты в хр последний раз это делал или в 98ой винде?
                              Ответить
                            • >>ты в хр
                              в икспи не прокатит.

                              >>Alt-Enter, алсо наафига?

                              Господи. И этот товарищ что-то плел о том, что якобы, я - "отсталый обсосок".

                              (
                              Ответить
                              • в 64битной может не прокатит, но в 32битной - воркает
                                Ответить
                                • 1.0 в вашу пользу. только что проверил.
                                  На висте/7 не катит.
                                  Ответить
                                  • > 1.0 в вашу пользу. только что проверил.
                                    Что!? Ты открыл КОНСОЛЬ да еще и развернул ее на ПОЛНЫЙ ЭКРАН!? Что с тобой случилось?
                                    Ответить
                                    • в винде нет консоли. только черный экран: у вас не лицензионная версия виндовс или синий экран смерти
                                      Ответить
                                    • Я вставил в прогу с формой строчку {apptype console}- чтобы не так страшно было-и запустил. На фоме формы появилась консолечка.
                                      Ответить
                                  • Неправильно делаешь. Ты начинаешь разговор в стиле выиграл/проиграл, а надо - выиграл\выиграл. 1:1
                                    Ответить
                                  • Лол. Деградация венды.
                                    Ответить
                                  • Alt+Enter работает в Висте... если вместо видеодрайвера подсистемы WDDM поставить видеодрайвер подсистемы XDDM от Windows XP.

                                    Правда, тогда Windows Movie Maker будет ругаться на несовместимую систему, но он не нужен.
                                    Ответить
                                    • Alt+Enter работает в Висте... Если поменять видеодрайвер.

                                      Ахуеть, я думал, это питухи всякие таким страдают.
                                      Ответить
                                    • > Alt+Enter работает в Висте... если вместо видеодрайвера подсистемы WDDM поставить видеодрайвер подсистемы XDDM от Windows XP.
                                      В висте и выше убрали поддержку текстовых режимов? Правильный ход, не нужны они никому при нынешних мониторах, только код дров засоряют. Но вот почему не перепилили cmd на банальный фреймбуфер как в линупсе - я не знаю. Не думаю, что фреймбуфер на том же direct x так сложно сделать... Видимо просто решили, что полноэкранная консоль никому не нужна (а она почти никому и не нужна, даже в липупсах, если работают иксы).
                                      Ответить
                                      • Неправославно же. Как минимум зависимость от установленных шрифтов.

                                        А ещё Doom не запускается без XDDM-драйвера или без Dosbox.
                                        Ответить
                                        • Doom вообще на NT имхо не запускается, т.к. юзает расширители дос. Алсо, есть win32 порты.
                                          Ответить
                          • > не умеет в фулскрин
                            Зачем фулскрин то? Даже в линухе фулскрин консоль юзают тупо потому, что можно иксы не ставить/не запускать. А если иксы есть и работают - намного удобнее пользоваться многовкладочной ко-ко-консолечкой, не разворачивая ее на фулкскрин ;)
                            Ответить
                            • люблю гразу в начале мая люблю теплый ламповый моноширный шрифт на пол экрана, способный заменить парное молоко матери и холодную силиконовую сиську девушки
                              Ответить
                              • Ооо, и эти люди, разворачивающие виндовую ко-ко-консоль, называют линупсоидов красноглазыми ко-ко-консольщиками? :)
                                Ответить
                            • > многовкладочной ко-ко-консолечкой
                              я уже без tmux не могу работать
                              Ответить
                            • ставь тайловый оконный менеджер с тегами
                              Ответить
                        • Ну, видимо, растянуть он имеет в виду по линупсьячьи - мышкой за угол.
                          Ответить
                          • >>Ну, видимо, растянуть он имеет в виду по линупсьячьи - мышкой за угол.

                            Сдается мне, что именно так Кирк тянул свой анус.
                            Ответить
                    • К пожеланиям нормальности нужно еще добавить навигацию / поиск по консоли по горячим клавишам, типа C-r (поиск по регулярному выражению в истории ввода), C-a, M-f, C-e, M-d, C-k и т.д. (копирование, вставка, перемещение по слову, к концу / началу строки). Я чет сомневаюсь, что cmd.exe что либо из этого умеет.
                      Ответить
                      • Копирование/вставка/поиск(по содержимому) есть, но потребует множества нажатий, Ctrl+Left и Ctrl+Right работают (если я правильно понял перемещение по слову), Home и End работают. Про переопределение сочетаний не знаю.
                        Ответить
                        • поиск есть?
                          Ответить
                          • > поиск есть?
                            Есть
                            Alt+Space/правый клик -> Изменить -> Найти...
                            Ответить
                            • Это не то ищет :) C-r ищет в истории вызова команд. Т.е. предположим такая сессия:
                              $ cd ~/projects
                              $ git clone my-project
                              $ cd ~/projects/my-projects/conf
                              $ ./configure
                              $ make
                              $ <C-r> git RET # из истории ввода команд подставили git clone my-project
                              $ <C-e> # перешли в конец строки
                              $ <M-DEL> # скопировали с удалением последнее слово
                              $ firefox <C-y> & # откыли браузер с линком на репозиторий откуда мы что-то только что скомпилировали
                              Ответить
                      • История - f7. Поиск по первым буквам - f7 и набираешь.Фаталити не нужны.
                        Ответить
                    • в винде только надстройки вокруг cmd.exe в виде Console/ConEmu, либо совсем уходить в хардкор с цыгвином и около него

                      но приз самой убогой консоли однозначно должен достаться sql*plus.
                      эта хуйня даже без истории команд...
                      Ответить
                      • Но ведь и для этого есть emacs-плагин
                        http://www.emacswiki.org/emacs/SqlMode
                        вот тут другой плагин с картинками
                        http://www.emacswiki.org/emacs/SqlPlus
                        Ответить
                        • You can use rlwap to add readline support to sqlplus. Run sqlplus like this:
                          $ rlwrap -c sqlplus username@database
                          Ответить
                      • Ну таких недоделаных много... практически любая Ява программа, которая должна работать в консольном режиме так себя ведет. Node.js - аналогично...
                        Ответить
                        • только вот оракл - не любая жабопрограмма
                          это внезапно поебень с ценой от десятков килобаксов до бесконечности
                          Ответить
                          • Чем ынтырпрайзнее, тем уебанскее с точки зрения нормального пользователя
                            Ответить
                      • Не знаю про sql*plus, но в оракловской консоли та же хуйня. Истории нет. А еще в оракле нельзя сделать экспорт в sql - какого хуя?
                        Ответить
                        • ага, ну не знаю про оракловую консоль, но в sqlplus та же хуйня...
                          Ответить
                          • Это таки одно и то же? Лол. Я после знакомства с этим уебищем погуглил и нагуглил sql developer. Как сделать экспорт в sql я так не нашел.

                            А почему sql*plus? И почему звездочка не жирная?
                            Ответить
                    • PowerShell
                      Ответить
                      • Когда уже люди начнуть отличать интерпретатор от эмулятора терминала? Мне кажется, windows-пользователям это не дано.

                        Q: А у вас есть нормальный монитор?
                        A: Windows
                        Ответить
                        • Бля, кто минусует, я его голову ебал?!
                          Ответить
                        • >отличать интерпретатор от эмулятора терминала
                          А нужно отличать? В чем разница-то?
                          Ответить
                          • > А нужно отличать? В чем разница-то?
                            Сразу видно пользователя винды ;)

                            Интерпретатор, он же shell (аля powershell, cmd, bash, sh, и еще тысячи их) исполняет введенные юзером команды и скрипты. Рисовать свое окно не умеет, и тупо общается с эмулятором терминала через stdin/stdout/stderr.

                            Эмулятор терминала, он же ко-ко-консолечка (встроенная в винду хреновина, которая активируется флагом в заголовке экзешника, konsole, gnome-terminal и т.п. в линухе) рисует окно, и умеет показывать в нем выхлоп некой программы (обычно того самого интерпретатора) и отправлять ей нажатые кнопочки. Сам эмулятор терминала ничего не понимает в командах, и не умеет их исполнять. Он просто эмулирует железный терминал (да, когда-то были такие железки с экранчиком и клавиатурой).

                            Вот как-то так, если я не туплю.
                            Ответить
                            • http://i.imgur.com/F2OLToq.jpg
                              Ответить
                              • > КОнсоль, КОмпиляция, КОнфиги
                                Плюсанул, годный вброс ;) Питушка сам нарисовал али копипаста?
                                Ответить
                            • А к чему тогда был комент http://govnokod.ru/14168#comment204116 ?
                              Ответить
                              • А хрен знает.

                                За выделение и кодировки отвечает эмулятор терминала, и под винду вроде как есть и сторонние, помимо стандартной консолечки. В них, говорят, копирование человеческое.

                                За дополнение по табу отвечает интерпретатор, и здесь powershell действительно в тему. Вдруг у него с табами все хорошо :)
                                Ответить
                  • входит-выходит, входит-выходит...
                    Ответить
        • Кстати, не только для консольных. Для любых, которые запускаются из консоли.
          Ответить
          • На самом деле не только. При запуске почти из любой проги, кроме двойного тыка в экзешник/немодифицированный ярлычок в эксплорере ;)

            У CreateProcess() если NULL передать в качестве рабочей папки (а я более чем уверен, что всем влом передавать туда папку, отрезанную от имени запускаемого экзешника), то текущей будет рабочая папка родительского процесса (как и у ко-ко-консолечки).
            Ответить
      • Тоньше, Борманд, еще тоньше! ;)
        Когда душа модуля загружена в память, ей глубоко пох, что там делается с телом (исключение - операции копирования/перемещения).
        Можно даже в ряде случаев переместить программу после запуска - GetModuleName будет упорно возвращать путь, из которого модуль
        стартовал.
        Ответить
        • Но по этому пути же обычно не только прога лежит, а еще какие-нибудь read-only файлы, которые нужны программе для работы :)

          Тут говно если и есть, то все-таки в SetCurrentDir(). Можно ведь было тупо подклеивать к результату ExtractFileDir(Application.ExeName) имя нужного файла и не прибегать к таким жестоким мерам ;)

          > ей глубоко пох, что там делается с телом
          В линухе настолько пох, что прогу вообще удалить можно ;)
          Ответить
          • Не вижу связи.
            Ответить
            • Чего с чем? Я просто предположил, зачем нужно лезть в папку с прогой. И этот вариант (почитать другие лежащие там файлики), имхо, нужен гораздо чаще, чем перемещать саму прогу и подменять ее другой (аля самоапдейт). Да и перемещать прогу можно только если она запущена с NTFS.
              Ответить
              • >>зачем нужно лезть в папку с прогой
                А что в этом такого? Вопрос в том, зачем указывать проге текущую директорию как текущую же? В коде SetCurrentDir встречается более 6 раз - он раскидывается ей и там и сям. Зачем ему это нужно - хз.
                Ответить
                • > А что в этом такого?
                  Да ничего в этом такого, все нормально же ;)

                  > Вопрос в том, зачем указывать проге текущую директорию как текущую же?
                  Потому что при старте проги текущая директория не всегда та, в которой лежит бинарник.

                  > Зачем ему это нужно - хз.
                  Ну а вот это реально х.з. Я бы все-таки тупо приклеивал имя нужного мне файла к ExtractFileDir(Application.ExeName). Менять директорию лишний раз действительно не айс.

                  > В коде SetCurrentDir встречается более 6 раз - он раскидывается ей и там и сям
                  На разные места, или на одно и то же?
                  Ответить
                  • Потому что при старте проги текущая директория не всегда та, в которой лежит бинарник.

                    Вы это серьезно?
                    Ответить
                    • твой мир рухнул?
                      Ответить
                      • Нет, не рухнул. Спасибо за минус, но анальный секс с тобой был бы хуже.
                        Ответить
                        • Вот только не надо опять устраивать туалет из топика.
                          Ответить
                      • а тралишь ты знатно. не зазнавайся только
                        Ответить
                    • > Вы это серьезно?
                      Ну нет блять, шуточки шутить изволил.

                      1) В свойствах ярлыка на вкладке ярлык взгляни на поле "Рабочая папка" - текущей будет та, которая вписана в это поле.
                      2) Попробуй запустить прогу из консолечки по полному пути, стоя где-нибудь в документах и сеттингах - текущей будет текущая папка консолечки.
                      3) Ассоциируй прогу с каким-нибудь типом файлов и ткни в такой файл - текущей будет та папка, в которой лежит тыкнутый файл.
                      4) Открой ман по CreateProcess'у, и внимательно прочти строчку, рассказывающую о том, какая папка будет текущей, если передать туда NULL (ответ: текущая папка родительского процесса).
                      Ответить
                      • >>1) В свойствах ярлыка на вкладке ярлык взгляни на поле "Рабочая папка" - текущей будет та, которая вписана в это поле.
                        По умолчанию - та папка, где находится файл.

                        >>2) Попробуй запустить прогу из консолечки по полному пути, стоя где-нибудь в документах и сеттингах - текущей будет текущая папка консолечки.

                        О нет, пожалуйста, не надо!..
                        Ответить
                        • Я всегда буду запускать прогу двойным кликом по ярлычку, параметры которого я никогда не буду править. Никогда не буду ассоциировать файлы со своей прогой. Никогда не буду указывать свою прогу в настройках других прог, т.к. они могут ее запустить с неправильной текущей папкой. И ни при каких обстоятельствах не буду прикасаться к богомерзкой консолечке.

                          Удачи. Она тебе понадобится ;)
                          Ответить
                          • Господи. Мы тут съедим друг друга!
                            Я всего лишь хочу сказать, что автор - мудак, потому, что юзает setcurrentdir. Нах ее вообще вызывать?
                            можно было обойтись как минимум 3 способами, хотя бы тем же готовым application.exename Рабочая папка, и папка, в которой файл находится - есть разница?
                            Ответить
                            • > автор - мудак, потому, что юзает setcurrentdir
                              И с этим я согласен и не спорю :) И вдвойне мудак, если прога многопоточная.

                              > Рабочая папка, и папка, в которой файл находится - есть разница?
                              Да, в некоторых ситуациях они могут быть разными. Список ситуаций ты видел выше.
                              Ответить
                      • Двачую консолечку
                        Ответить
                  • На разные. Я хз как работает GetCurrentDir, но видимо просто обрезает путь, полученный с помощью GetModuleName до слэша. Обе этих функции НИКАК не реагируют на перемещение запущенного модуля, возвращая только путь, из которого модуль стартовал.
                    procedure TForm1.Button1Click(Sender: TObject);
                    var
                      buff:array[0..256]of char;
                      currentpath,modpath:string;
                    begin
                      currentpath:=getcurrentdir;
                      fillchar(buff,256,0);
                      GetModuleFileName(0,@buff,sizeof(buff));
                      modpath:=string(buff);
                      messagebox(handle,pchar('CurrentDir='+currentpath+#13#10+'GetModuleDir='+modpath),'',0); // теперь переместите куда нибудь и снова нажмите
                    end;
                    Ответить
                    • > Я хз как работает GetCurrentDir
                      Да как, как... 146%, что тупо вызывает апишку GetCurrentDirectory. А та, в свою очередь, тупо возвращает значение какой-то своей внутренней переменной. В которой по умолчанию лежит значение, переданное CreateProcess'у в параметре lpCurrentDirectory, и которую можно поменять апишкой SetCurrentDirectory (SetCurrentDir в делфи). Загляни в исходники GetCurrentDir, они у делфийских модулей насколько помню открытые и валяются где-то рядом с делфей.

                      > Обе этих функции НИКАК не реагируют на перемещение запущенного модуля, возвращая только путь, из которого модуль стартовал.
                      При чем здесь перемещение исполняемого модуля?! Читай выше реальные случаи, когда текущая папка != папке с экзешкой. http://govnokod.ru/14168#comment203160
                      Ответить
    • тема - троллинг.
      Ответить
    • > 'Îøèáêà ïîäêëþ÷åíèÿ ÁÄ'
      cp1251ВиндоAnsiПроблемы ;)

      Я обожаю делфи (и другие неюникодные виндопроги) за эту прелесть при копипасте ;)

      Хинт: когда копипастишь из ANSI'шных прог, переключай раскладку на русский. Тогда этих кракозябр не будет.
      Ответить
      • Ах да блядь. В 2013 году эти ёбаные макаки все еще не осилили юникод. TC из за этого частично неюзабелен.
        Ответить
        • Какие-то дрочилы уверяли, что проблема отнюдь не в VCL, а в кривой реализации винапи.
          Ответить
          • > отнюдь не в VCL
            Ну она не в VCL. Насколько помню, весь ANSI'шный софт так себя ведет. Но VCL тоже виноват, могли бы уже тогда портануть на юникод.
            Ответить
        • Ах да блядь, если написать ср1251 программу на сишечке, то такого, конечно же не будет, ведь это же кулхацкерная сишка, она же лишена дельфинячих багов, ну должна же быть лишена, но не должно же быть проблем с кодировкой, но не должно же... но как же... как же так...
          Ответить
          • ты это сейчас про cmd.exe?
            сделай над собой усилие - скомпилируй и запусти эту же программу на сишечке в нормальной оси, в которой нет этих проблем
            Ответить
          • Ты про что? Гуевые программы на сишке обычно без проблем с юникодом.
            >если написать ср1251 программу на сишечке
            Ну так не пиши. Очевидно же. Или ты про консоль?
            Ответить
            • > Гуевые программы на сишке обычно без проблем с юникодом.
              Скажи это сибилдеру, который работает в той же самой cp1251 :)

              А нормальные юникодные проги они на любом языке без проблем. Тут траблы не в языке, а в соломе, которой набиты головы тех людей, которые до сих пор экономят байты на однобайтной кодировочке и не юзают юникод.
              Ответить
              • А разве Дельфи VCL не юникоден уже года три как?
                Ответить
                • > года три как
                  В каком там году в винде юникод внедрили? :) Кажется в 95 уже зайчатки появились...

                  > юникоден
                  Он то юникоден... А теперь заставь всех олдфагов на него перейти ;)

                  Сам то поди D7 до сих пор юзаешь? :)
                  Ответить
                  • минимальная версия где есть юникод - 2009. Зато семерка самая удобная. Последние версии RAD XE полны свистелкомигалок и компилят пустые бинарники с формой аж под ~3mb.
                    Ответить
                  • > Кажется в 95 уже зайчатки появились...
                    NT 3 (94-й год?) уже была польностью юникодной включая имена файлов. Не помню, как там было с 9х, в любом случае, с начала 2к-х 9х умерла. А делфипетухам некуда спешить.
                    Ответить
                    • > Кажется в 95 уже зайчатки появились...

                      Евгений Ваганыч, перелогиньтесь.
                      Ответить
                  • Да, кстати окна можно создавать через CreateWindowW, надо только VCL не использовать.
                    Ответить
                    • А какой тогда толк от визуальной либы? Апи ведь можно хоть на чем дергать. Кстати. видел в сети прогу(к великому сожалению, забыл ее название): аналог редактора форм в делфи, но форма создается и держится на чистом api. Потом этот код из редактора можно вставить в делфи и скомпилировать.
                      Ответить
              • А что, сибилдер в юникод совсем никак?

                В делфе там вроде графические компоненты байтовые. Гислер про это в интервью говорил.
                Ответить
                • А хрен бы знал. Там же, емнип, та же VCL, что и у делфей соответствующих версий. А билдер без VCL нинужен.
                  Ответить
                • В билдер никак ( очень кривая поддержка юникода, что борландовский, что из XE
                  Ответить
                  • Кстати у старого билдера/делфи еще забавная херня есть - они неправильно выставляют родителя у модальных окон (вернее вообще не выставляют). В результате они даже в винде себя ведут неадекватно - нормальное окно пищит и мигает самым верхним модальным, билдеровское - просто пищит. А в линухе под вайном все это вообще пидорасит, и "модальные" окна проваливаются друг под друга ;)
                    Ответить
                    • Ну, не знаю. Вообще, меня с первого взгляда этот шестой билдер чем-то зацепил, и иконка у него классная. Ночами не спал, сидел за ним, так как от паскального синтаксиса меня выворачивало. Потом как-то забросил(
                      Ответить
                  • Пичалька. Выкиньте тогда его нахуй. Блядь, ну не верю я, что в 2014 году проблема юникода все еще не решаема.
                    Ответить
                    • я же говорю, начиная с Delphi 2009 все форсированно поддерживают юникод. Все ANSI API функции/типы замены их юникодными аналогами. char=WideChar, string=WideString, MessageBox=MessageBoxW...
                      Ответить
            • лол, язык тут ни при чём вообще
              Ответить
              • Ну как сказать. Есть языки с изначальной поддержкой юникода (жаба, шарп). Вот там даже если захотеть, так не получится ;)
                Ответить
                • Есть языки у которых нет ансишных гуй либ, это да.
                  Ответить
                • ну, если похерить нативность...
                  Ответить
                  • Да нативность не виноватая, ее можно не херить. Виновата инерция в головах программистов: "а нахуй нам юникод, он же как минимум вдвое медленней и больше, а наша программа дальше ${country_name} не пойдет". Просто в некоторых местах все-таки решились забить, и все-таки сделать юникодные строки обязательными. Qt вон нативная, но QString в ней юникодный.

                    В том же JSON запретили все кодировки кроме православной utf-8. Вот тупо взяли и запретили. Даже не стали давать староверам шансов как это сделали в XML.
                    Ответить
                    • А что делать с двоичными данными?

                      В json кое-что зря запретили, например, коменты. В конфигах не хватает.
                      Ответить
                      • > А что делать с двоичными данными?
                        Хекс или base64 же.

                        > коменты
                        Ну да, комменты пригодились бы. Хотя это усложнило бы парсер\генератор. Т.к. коменты желательно бы сохранять при программном изменении жсона.
                        Ответить
                        • >Хотя это усложнило бы парсер\генератор. Т.к. коменты желательно бы сохранять при программном изменении жсона.
                          Да и без этого пошло бы, хрен с ним. А сохранять коменты в хешмассиве будет проблематично, т.к. по стандарту порядок ключей в нем не определен (?)
                          Ответить
            • >>Или ты про консоль?

              ХВАТИТ уже об этом.
              Ответить
              • Блин, почему такой консолеогненный консолебатхерт от слова консоль? :)
                Ответить
                • О, и вы туда же((
                  Ответить
                  • А я, кажется, начинаю понимать, откуда у пользователей винды такие знатные ко-ко-консолебатхерты...

                    Они просто нормальную ко-ко-консоль не лапали, и экстраполируют свои впечатления от cmd (или что еще хуже - command.com) на все ко-ко-консолечки :)
                    Ответить
                    • я из любимой консолечки могу короткой командой грепать все логи (часть из них пожата) с нескольких машин.
                      Или найти интересующий кусок xml в 15гб файле за несколько секунд (grep -A, я люблю тебя).

                      Батхёрт у тех, кому кроме редактирования килобайтных файликов и работы с трёмя каталогами ничего не нужно.
                      Ответить
                      • > Или найти интересующий кусок xml в 15гб файле за несколько секунд
                        А если весь файл в одну строку? :) У меня такой был, я так толком и не научился в нем грепать. Юзал xpath.
                        Ответить
                        • А что под линух для икспатша есть из консолечки?
                          Ответить
                          • Ну, например, тулза, названная Капитаном Очевидность xpath (из пакета libxml-xpath-perl). Я ее нашел случайно, тупо набрав xpath в консоли.
                            Ответить
                        • Натравить на него tidy с форматтером, грепать.
                          Если уж xpath отрабатывал за разумное время, tidy тоже должен управится.
                          Ответить
                      • > 15гб файле
                        >за несколько секунд
                        /0?
                        Ответить
                        • core i7, 8gb ram, ssd, grep юзается с опцией -m 1, т.е. до первого вхождения.
                          ни один редактор не может открыть такой файл за разумное время, да и не нужно.
                          Ответить
                          • >т.е. до первого вхождения.
                            Первое вхождение на 1%?
                            Ответить
                            • Откуда мне знать, да и зачем? Скажи лучше, как без консолечки с грепом найти по шаблону кусок текста с контекстом в файле порядка десятка гигабайт?

                              P.S. специально для тебя посмотрю, сколько греп работает при поиске отсутствующего шаблона.
                              Ответить
                              • > сколько греп работает при поиске отсутствующего шаблона
                                Столько же, сколько и чтение 15 гигового файла. Т.е. как минимум несколько минут.

                                > Скажи лучше, как без консолечки с грепом найти по шаблону кусок текста с контекстом в файле порядка десятка гигабайт?
                                Поюзать лицензионную версию гуишной утилиты NegroSoft™ MegaGrepper®.
                                Ответить
                                • > NegroSoft™ MegaGrepper®
                                  Какой-нибудь хекс-редактор гуёвый может и прокатит для консолефобов.
                                  Ответить
                                  • Или это, или бесплатными/полубесплатными вьюерами TC/Far. С ними даже можно найти текст A, а потом ближайшее к нему вхождение текста B, чего ваш grep не может.
                                    Ответить
                                    • > текст A, а потом ближайшее к нему вхождение текста B
                                      > grep не может
                                      Если я правильно понял задачу, консолефил напишет хрень вида grep 'A.*?B' или pcregrep -M 'A[\s\S]*?B' для многострочного режима.
                                      (Или ещё короче - мало ли, что у консолефилов на уме :))
                                      Ответить
                                      • А если между A и B дохрена текста, а нужно только B?
                                        Ответить
                                        • По идее, B взять в группу и её печатать.
                                          На stackoverflow говорят, что pcregrep может в группы или вообще можно загнать результат одного grepа в другой grep.
                                          Ответить
                                          • > загнать результат одного grepа в другой grep
                                            Ну да, если B после A - то можно. А если нужно найти A, а потом B, лежащее перед ним? :)
                                            Ответить
                                • $ ls -alh universe.xml 
                                  -rw-r--r-- 1 lol lol 10G Dec  2 15:08 universe.xml
                                  $ time grep abracadabra universe.xml
                                  # some output
                                  grep abracadabra universe.xml  6.02s user 3.13s system 39% cpu 22.933 total
                                  Ответить
                                • В этот раз файлик поменьше, всего 10гб. Проверял на холодном кэше, 22 секунды. Думаю, можно экстраполировать, умножив время на 3/2 и получить 33 сек.
                                  Ответить
                                  • > Проверял на холодном кэше, 22 секунды.
                                    О_о. SSD что ли, судя по скорости?
                                    Ответить
                                    • > SSD что ли
                                      http://govnokod.ru/14168#comment203495
                                      При этом открыть файл тем же vim и поискать - очень долго.
                                      Ответить
                                      • > При этом открыть файл тем же vim и поискать - очень долго.
                                        А он же поди полностью его всасывает в память. Тут надо что-нибудь из хекс-редакторов. Тот же винхекс вполне нормально работает с терабайтным винтом, и даже ищет шустро.

                                        Оффтоп: под линух есть вменяемый* хекс редактор?
                                        * Вменяемый это как минимум:
                                        - не падает;
                                        - не грузит весь файл в память;
                                        - умеет вставлять блоки в середину (раздвигая место под блок);
                                        - имеет 2 синхронных курсора (один в текстовой области, второй в шестнадцатеричной);
                                        - показывает оффсеты курсора, начало/конец/длину выделенной области;
                                        - есть хекспоиск;
                                        - есть закладки;
                                        - есть декодеры для некоторых типов данных (хотя бы int разной длины и float).
                                        Ответить
                                        • Попробовал bless, не уверен, что удовлетворяет всем требованиям, но файл открыл моментально и поиск работает шустро.

                                          emacs c hexl-mode жестоко слился.
                                          Ответить
                                          • > bless
                                            8 гиговый файл открыл, по хексу ищет, декодеры, курсоры и офсеты есть, но:
                                            1) Окну какого-то уя сделали минимальную ширину. В результате оно показывает минимум 17 колонок (хотелось бы все-таки привычные 16).
                                            2) Статусбар проектировал чудак на букву м: 2-3 длинных числа в маленьком боксе, который не удлиняется даже если убрать остальные куски статуса. В результате читать офсеты и размеры нереально. Скопировать их тоже нельзя ;(
                                            3) Нельзя править числа в окошках декодера.
                                            4) Нет вставки блока (я заипусь вставлять какие-нибудь 4096 байт в insert mode).
                                            5) Нет закладок.
                                            Ответить
                                            • Что, ко-ко-ко-соснули?
                                              Ответить
                                              • > Что, ко-ко-ко-соснули?

                                                Это ты к чему? На локалке хекс-редактор ещё прокатит для подобного поиска, на сервере у меня его нет и быть не может.
                                                Ответить
                                                • Фар или его анал ог вполне можно запустить и по ко-ко-консоли. Да и в чем проблема гуем подсоединиться?
                                                  Ответить
                                                  • Гуём к linux-серверу? Представляешь, сервера работают не только под windows.
                                                    Ответить
                                                    • А что, на линупсе гуя не бывает? Если это не какое-то эмбеддед гавно.
                                                      Ответить
                                                      • Ну на сервера-то гуй не ставят, ибо ни к чему, баловство. Да и кекс-редактор туда врядли кто-то поставит, а права на установку софта всем встречным-поперечным не выдают.
                                                        Ответить
                                            • okteta пробовал?
                                              Ответить
                                              • > okteta пробовал?
                                                Сейчас затестим.

                                                P.S. Вот за что ненавижу кедовские приложения - так за то, что они мне в систему тащут всякое говно типа nepomuk.
                                                Ответить
                                              • > okteta пробовал?
                                                Спасибо! Почти всем пунктам прошел. Из мелких минусов: вставка блоков совсем не очевидная (но когда догадаешься как - юзабельная), офсеты не копируются.

                                                Но... Support to load files larger than 2 GiB has not yet been implemented.

                                                Так что ждем следующих кандидатов :)
                                                Ответить
                                          • http://www.emacswiki.org/emacs/vlf.el
                                            Но быстрее греп, конечно не будет. Но жить можно, если не долго.
                                            Ответить
                                          • https://github.com/m00natic/vlfi
                                            О, даже такой есть, сам не знал.
                                            Ответить
                              • >Откуда мне знать, да и зачем?
                                Ради чистоты эксперимента хотя бы. Без этого это число ничего не значит.

                                >P.S. специально для тебя посмотрю, сколько греп работает при поиске отсутствующего шаблона.
                                Ой спасибки :)
                                Ответить
                    • У меня впечатление такие, что прыщебляди норовят сунуть свою ко-ко-консоль и прыщеблядское говно вообще во все места, в том числе туда, куда их не просили.

                      coreutils я щупал и они мне в общем-то понравились. Не понравился мне подход питона, который тянет на все оси линупсячий путь (ко-ко-консоль, ко-ко-конпеляция), даже на те, на которых он не прижился.
                      Ответить
                      • > У меня впечатление такие, что прыщебляди норовят сунуть свою ко-ко-консоль и прыщеблядское говно вообще во все места, в том числе туда, куда их не просили.

                        Вот-вот. И ведут себя, будто бы познали истину, которая более никому не открылась. Начинают вести говнопроповеди, забывая о пределах применимости.

                        Словно они, как инопланетяне из фильма, научились ссать из пальца и им это понравилось. И после этого доказывают всем, как это удобно и почётно: мол, трусы снимать не надо, уёв запасных десять штук появляется, и вообще все их кумиры так делают. А остальным и одного уя хватает.

                        Я не против ко-ко-консолечки, я даже за, но не надо откатываться до шестидесятых и кричать на форумах, что она - единственное расово верное средство.
                        Ответить
                        • > У меня впечатление такие, что окнобляди норовят сунуть свой гу-гу-гуй и окноблядское говно вообще во все места, в том числе туда, куда их не просили

                          Вот-вот. И ведут себя так, будто бы познали истину, которая более никому не открылась. Начинают вести говнопроповеди, забывая о пределах применимости.

                          Словно они, как инопланетяне из фильма, научились ссать из пальца и им это понравилось. И после этого доказывают всем, как это удобно и почётно: мол, трусы снимать не надо, все делается мышкой через уй, не надо лазить в консолечки и конфиги, и вообще все их кумиры так делают.

                          Я не религиозный фанат ко-ко-консолечки, и мне нравятся проги с адекватным гуем, но не надо кричать на форумах, что ко-ко-консолечка неюзабельное говно для красноглазых питухов, а гуй - единственное расово верное средство.
                          Ответить
                          • Верно подмечено :) Все страдают от питушков, которые навязывают своё мнение и забывают о пределах применимости.
                            Ответить
                            • Ну так громче всех кукарекают как раз гуйпитушки. Стоит в треде возникнуть слову "консоль" сразу текут реки горячего баттхёрта.

                              Я юзаю гуёвый браузер и делаю 3-way-merge в IDE, пользуюсь графическим клиентом к RDBMS и в конечном счёте против гуя ничего не имею.
                              Ответить
                              • гуёвый браузер ненужно links ненужно telnet ненужно tcpdump ненужно осциллограф!
                                олололо, осциллографофобобатхёрт!
                                Ответить
                                • А отправлять данные ключом Морзе?
                                  Ответить
                                • осциллограф - это по-барски. лучше лампочку присобачить или языком измерять.
                                  Ответить
                              • > "консоль"
                                ггыгыгг, слышь, Бивис, он сказал "консоль"
                                Ответить
                          • Прыщебляди отличаются тем, что как детсадовцы, не способны придумать ничего своего и поэтому употребляют чужие мемы в отношении оппонентов по принципу «кто как обзывается — тот так и называется».
                            Ответить
                        • > но не надо откатываться до шестидесятых
                          почему?
                          секс наркотики рок-н-ролл же!
                          Ответить
                          • Но в шестидесятые не было Electric Light Orchestra!
                            Ответить
                            • зато был аэроплан джефферсона
                              ну и тхе беатлес, конечно же
                              Ответить
                              • А мне жутко нравится Led Zeppelin.
                                Ответить
                                • Тогда увы, потому что в 60х ты бы пиздовал слушать ярбёрдс
                                  Ответить
                      • > Не понравился мне подход питона, который тянет на все оси линупсячий путь (ко-ко-консоль, ко-ко-конпеляция), даже на те, на которых он не прижился.
                        Ну да, версий винды и архитектур, на которых она работает не так уж много. Достаточно было бы собрать пару готовых dll'ок для x86 и x86_64, и все были бы довольны. Даже если не заморачиваться с инсталлятором, то положить 2 дллки в нужную папку уже на порядки проще, чем качать кучу зависимостей и ко-ко-компилить их.
                        Ответить
        • ?>TC из за этого частично неюзабелен.
          Слыш, топикстертор, ты частично неюзабелен.
          Ответить
      • Хинт, бять: поставь линух.
        Ответить
        • Хуинт
          Ответить
        • Нахуя?
          Ответить
          • чтобы нормально копипастить код на говнокод не переключая раскладку
            Ответить
            • А не проще поставить нормальное IDE, из которого можно копипастить на говнкод, не переключая раскладку? :)
              Ответить
              • за 100 200 тыс лучше уж кухонный гарнитур купить.
                За 6 может бы еще и купил. Кто нибудь в курсе, Эмбаркадеро еще продает делфи за 6 000? Акция ж вроде была.
                Ответить
                • > за 100 200 тыс лучше уж кухонный гарнитур купить.
                  Ты так говоришь, как-будто старые delphi/builder у тебя куплены ;)
                  Ответить
                  • не куплены. но и не взломаны
                    Надо же мне как-то учиться, я не обманываю разработчиков.
                    Ответить
                    • А где же ты взял ключики к крестобилдеру и делфи, если не сгенерил кейгеном? Они ведь, насколько помню, без него не работают :)
                      Ответить
                      • 6-да, старше - нет.
                        Ответить
                      • А DCC32.EXE компилирует, даже не требуя ключиков. Правда, это не путь истинного дельфятника, ибо ко-ко-консолечка.
                        Ответить
                        • Не обманись...
                          Ответить
                        • > даже не требуя ключиков
                          Их можно вписать в pas файл, чтобы не прикасаться к богомерзкой консолечке.
                          Ответить
                          • Директивы компилятора прямо в коде — вещь полезная, чтобы не гадать, как скомпилируется код на чужой машине. Но я сейчас о других ключиках: консольная версия компилятора запускается даже при отсутствии лицензии или кейгена.
                            Ответить
                            • Буду спорить. А чтобы не проспорить, скажу, что при по-пытке во-воспользоваться ко-ко-компиляторм младше 7 (Delphi 2009/XE) выдается ко-ко-консольное сообщение: "ко-коконсольный компилятор не работает в триальной версии"
                              Ответить
                              • Буду спорить: http://rghost.ru/50690224

                                В архиве неизменённые экзешники (можно проверить по контрольным суммам, если интересно) консольных компиляторов Delphi разных версий из диапазона 2.0 — 18.0, т. е. и ниже 7, и выше. Ключевых файлов в архиве нет. Запускаются на машине, на которой Дельфи отродясь не было.

                                Что не так?
                                Ответить
                                • ну не знаю. я столкнулся с этим, когда ставил JEDI VCL на триальную Delphi 2009. Там инсталлер компилируется из исходников. Кстати-спасибо за архив. Я брошу кость, которую в меня бросили - в суп.
                                  Ответить
                                  • А вообще в разных XE компилятор может и не работать в триальной версии. Я только сейчас вспомнил, что триальную версию XE4 мне так и не удалось поставить, потому что инсталлятор выводил глупое сообщение о нехватке места на диске, хотя места было навалом.

                                    Как действовал дальше, уже и не помню. То ли удалось распаковать, то ли скачать пиратку, но желания покупать то, что может ещё и не установиться, точно не возникло.

                                    По крайней мере, выдранный компилятор регистрации уже не требует. Глюки были только с дотнетовской Delphi 8.

                                    P.S. А Delphi 2009 = Delphi 12, её в моей коллекции пока нет.
                                    XE — это Delphi 2011 = Delphi 15.
                                    Ответить
                • Знакомый купил лицензию starter, весь исплевался и купил таки professional. В starter урезаны не только ололо мультитайер, но и фичи IDE типа автодополнения, так что за нее даже и 6к отдавать не стоит.
                  Ответить
                  • Да все равно, лишь бы была возможность честно на нем кодить.
                    А за сколько купил, если не секрет?
                    Ответить
                    • Лазарус не пробовал юзать? А то если устроит, то и платить не придется ;)
                      Ответить
                      • Пробовал, конечно пробовал...
                        Но на мой взгляд он больше подходит для тех, кто уже профессионально
                        знает делфи. На него не лезет большинство популярных компонентов, своих
                        мало, а те, для которых есть аналоги оказываются в полтора-два раза
                        глючнее. Компоненты, кстати, просто так не поставишь - он банально не
                        поддерживает это. Приходится перекомпилировать ВСЮ СРЕДУ, поэтому он
                        таскает свои исходники с собой. Но все же, в целом неплохо. Наверно,
                        перейду на него, не всю же жизнь на триалке кодить(
                        Ответить
                    • >А за сколько купил, если не секрет?
                      Не помню. Ну по официальной цене, без скидок. А так да - в fpc конечно лямбд нет и оптимизатор никакой, но зато в lazarus даже отладчик заработал, значения выражений показывает.
                      Ответить
                      • Я, кажется, начинаю понимать, почему так мало полезных прикладных программ. Не потому, что мало программистов, а потому, что банально не на чем кодить( Печально.
                        Ответить
      • Я в курсе, просто по-быстрому постил.
        При изменении раскладки в буфер копируется кодовая стр, не?
        Ответить
        • > При изменении раскладки в буфер копируется кодовая стр, не?
          Походу. Ну другие причины в голову не приходят.
          Ответить
          • Там не так. Надо чтобы не при копировании, а при выделении была нужная раскладка.
            Ответить
    • показать все, что скрытоИз давних времен жилые дома делали преимущественно из дерева. Дерево по праву является натуральным материалом и экологически чистым. Строить деревянный дом необходимо так, дабы в нём по максимому сохранялось тепло и вместе с этим поступал воздух. Хвойные смолы, которые выделяет древесина, несомненно являются непревзойденным антисептиком, а также она способна сорбировать токсические соединения, которые есть внутри жилища, в атмосфере. По этой причине дома желательно всего возводить из древесины.
      В каждой квартире либо частном дачном домике иногда следует выполнять ремонтные работы, будь-то поверхностный или капитальный. А вот для этого каждый раз должны быть необходимые инструменты для квартиры, Инструмент для жилья для того чтобы в необходимый час они были непосредственно под рукой, а не рыскать затем по торговым центрам и искать всё нужное. Да и какой же это в доме домохозяин, когда у него нету топора, гвоздей, молотка либо элементарной окрасочной кисти. Только имея в резерве необходимые инструменты, вы запросто сумеете справиться с большинством трудностей и препятствий в работе, даже если ремонтные работы вы делаете не сами.


      <a href=http://domokvar.ru/oboi/kakie-fotooboi-luchshe-vibrat-dlya-prichozhey>domokvar.ru</a>
      Ответить

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