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

    +110

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    DirName:=OpenDialog1.FileName;
        i:=Length(Dirname);
        While (i>0) and(Dirname[i]<>'\') do
        begin
          i:=i-1;
        end;
        If Dirname[i]='\' then Dirname:=Copy(Dirname,1,i-1);
        Edit1.Text:=DirName;

    Для определения директории, выбирается в ней файл, абсолютный путь к которому вырезается до первого найденного слеша

    Запостил: replay, 10 Апреля 2011

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

    • строчка 5 в качестве полного тела цикла шедевральна ))))
      Ответить
      • А чем не нравится? Можно было бы удалить begin и end, а вместо присвоения написать dec(i). Скомпилируется это в то же самое.
        Ответить
        • в дельфи нет функции поиска подстроки? обязательно циклы городить?
          Ответить
          • Забыл про LastDelimiter. Но в данном случае велосипед ненамного сложнее вызова функции.
            Ответить
          • в дельфи есть финкция выбора директории, которая заменила бы все 8 строк этого "кода"
            Ответить
    • показать все, что скрытоЯ так же делаю. Написать 3 строчки мне проще, чем вспоминать названия стандартных функций.
      Ответить
      • ужас же
        Ответить
      • Предполагаю, что даже базового знания английского достаточно, чтобы запомнить "выбор папки" - SelectDirectory. А параметры IDE подскажет. Ну на худой конец можно хотя бы LastIndexOf использовать...
        Ответить
        • "Выбор папки"?
          Я думал, оно должно называться "извлечение пути".
          Так что проще велосипед.
          Ответить
          • >извлечение пути
            как пожелаете
            ExtractFilePath (fullFileName)
            Ответить
          • несколько велосипедов, даже если в них нет ошибок, будут работать куда хуже и дольше чем несколько готовых функций
            Ответить
        • > "выбор папки" - SelectDirectory. А параметры IDE подскажет
          ОМГ, дельфяшечники совсем никогда не нажимают кнопку со странными рунами, которая находится рядом с Esc?
          И между прочим, работая со средой, которая приколочена гвоздями к винде, было бы неплохо разуметь разницу между folder и directory.
          Ответить
          • > ОМГ, дельфяшечники совсем никогда не нажимают кнопку со странными рунами, которая находится рядом с Esc?
            Оно и подразумевалось. В notepad.exe никакие кнопки с рунами не помогут.
            Ответить
            • а нафига вообще аскетствовать?
              кстати, за пару человекоперекуров можно сделать свой нотепад с блекджеком и дельфёвыми хелпами
              Ответить
          • если вы про справку, то таки нету.
            В последних версиях делфи справка - не то, что говно, а можно сказать, что отсутствует
            Ответить
      • google 'delphi select directory dialog'
        Ответить
      • но тем не менее, это почти всегда не гуд.
        на ум только приходит крайне редкая ситуация, когда ну очень нужно юзать inline-функцию (как в С++), а в дельфи ее нету:(
        но это конечно же не про ExtractFilePath
        Ответить
        • Инлайны - проблема только в старой версии.
          Ответить
          • в общем-то да.
            а для методов классов (невиртуальных конечно) тоже можно?
            Ответить
            • Думаю да. Я сам руками не трогал, не знаю.
              Ответить
      • ТОЛСТО!
        Ответить
      • Можно нажать Ф1. Там есть.
        Ответить
    • И в чём говнистость кода? Посмотрите стандартную функцию ExtractFilePath (которую афтар, по-сути, здесь и изобрёл заново) - тот же принцип, кроме пары мелочей. Ну да, по шапке за велосипедостроительство дать надо канеш, но к самому коду приставка "говно-" особо не клеится.
      Ответить
      • В защиту ОПа хочу сказать, что в Делфи есть функция Application.MessageBox, которая работает настолько говнисто, что аж в дрожь бросает. Вывод: используйте WinAPI и пишите на Ассемблере!
        Альзо: Приставка "говно-" конечно не подходит. Подходит приставка "быдло-".
        Ответить
      • Тут говенность в том, что для выбора папки используется диалог выбора файла.
        Мало того, что юзер затупит, так еще и пустую папку не выбрать.
        Ответить

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