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

    +93

    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
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    if Length(PP.curdir)<36 then
    pt:=' '+PP.curdir+' '
    else pt:=' \...'+Copy(PP.curdir,Length(PP.curdir)-30,31)+' ';
    Ptr:=PP.f_ptr;
    if PP.vol='' then PP.vol:='No Label';
    WriteString(1,cc+(40-length(pt)) div 2,pt,Pal[8]);
    WriteString(22,cc+1+(cc*(34-length(PP.vol))) div 40,'['+PP.vol+']',Pal[7]);
    if PP.vol='No Label' then  PP.vol:='';
    {if PP.empty then exit;}
    inc(ptr,sizeof(filrec)*row);
    for i:=row to n+row do begin
    if (i <PP.files) and (not PP.empty) then begin fname:=ptr^.filename;
    {if (ptr^.fileattr and 16) = 0 then StrLwr(fname);}
    if (Ptr^.fileattr and 2) <> 0 then fname[1]:=upcase(fname[1]);
    if ((Ptr^.fileattr and Hidden) <> 0) and (Pos('.',Fname)>0) then fname[Pos('.',Fname)+1]:=upcase(fname[Pos('.',Fname)+1]);
    SortFIle(fname);
    for a := length(fname) to 11 do fname:=fname+' ';
    fname:=fname+'│';
    if (Ptr^.fileattr and 16) = 0 then Str(Ptr^.filesize:10,pt)
    else if fname[1]='.' then pt:='UP──-DIR'
         else pt:='SUB─-DIR';
    fname:=fname+pt+'│';
    DateTimeCnv(pt,Ptr^.filedttm);
    fname:=fname+pt;     {SetFattr}
    if Ptr^.selected then WriteString(2+i-row,cc,fname,Pal[1]) else
    WriteString(2+i-row,cc,fname,Pal[2]);
    inc(ptr,sizeof(filrec));
    end
    else WriteString(2+i-row,cc,'            │          │        │     ',Pal[1]);
    end;
    end;
    procedure Put_File(PP:Panel;cc,row,x:word;active:boolean);
    var
    fname,pt:string;
    {ptr:P_filrec;}
    begin
    if PP.empty then exit;
    ptr:=PP.F_ptr;
    inc(ptr,sizeof(filrec)*(row+x));
    fname:=ptr^.filename;
    {if (ptr^.fileattr and 16) = 0 then StrLwr(fname);}
    if (Ptr^.fileattr and 2) <> 0 then fname[1]:=upcase(fname[1]);
    if ((Ptr^.fileattr and Hidden) <> 0) and (Pos('.',Fname)>0) then fname[Pos('.',Fname)+1]:=upcase(fname[Pos('.',Fname)+1]);
    SortFile(fname);
    for a := length(fname) to 11 do fname:=fname+' ';
    fname:=fname+'│';
    if (Ptr^.fileattr and 16) = 0 then Str(Ptr^.filesize:10,pt)
    else if fname[1]='.' then pt:='UP──-DIR'
         else pt:='SUB─-DIR';
    fname:=fname+pt+'│';
    DateTimeCnv(pt,Ptr^.filedttm);
    fname:=fname+pt;
    if active then If Ptr^.selected then WriteString(2+x,cc,fname,Pal[3]) else
    WriteString(2+x,cc,fname,Pal[4])
    else if Ptr^.selected then WriteString(2+x,cc,fname,Pal[1]) else
    WriteString(2+x,cc,fname,Pal[2])

    Файловый менеджер по-типу NC. Pascal, 7-ой класс школы. Участок формирования одной из панелей.
    PS: Вообще, это даже как-то работало: http://habrastorage.org/storage1/84736ecc/b4711597/5b1d2618/5b60c662.png

    Запостил: Tronix, 01 Июля 2011

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

    • make me unsee it 0_0
      Ответить
    • Не пойму зачем там указатели и всякие
      inc(ptr,sizeof(filrec)*(row+x));
      Когда можно было выделять память под массив и обращаться по индексу.

      А так - для седьмого класса имхо гениально.
      Ответить
      • Не помню за давностью, почему так. Весь проект - где-то около ~6000 строк, и всегда идет примерно такой код:
        ut_File(PXx^,1+curac*40,rb,x,True);      {HZ  !!!!!!!! x-1 ??????}
        ClearBox(Pal[10],23,1+length(PXx^.curdir),23,79);
        if CurX > 79-length(PXx^.curdir) then
        WriteString(23,1+length(PXx^.curdir),copy(cmd,CurX - (79-length(PXx^.curdir))+1, 79),pal[10])
        else if Length(cmd) > 79-length(PXx^.curdir) then
        WriteString(23,1+length(PXx^.curdir),copy(cmd,1,79-length(PXx^.curdir)),pal[10])
        else
        WriteString(23,1+length(PXx^.curdir),cmd,pal[10]);
        WriteString(23,0,Pxx^.curdir,pal[11]);
        WriteString(23,length(Pxx^.curdir),'>',pal[12]);
        cursoron;
        if CurX > 79-length(PXx^.curdir) then
        SetPos(23,length(PXx^.curdir)+CurX mod 80)
        else
        SetPos(23,1+length(PXx^.curdir)+CurX);
        b:=GetKeymouse;
        ch:=chr(b{ and 255});
        b:=b shr 8;
        cursoroff;
        Put_File(PXX^,1+curac*40,rb,x,false); {!!!!!!!!!!! WARNING x-1??? !!!!!!}


        Все комментарии примерно такие как в вышеприведенном участке -)
        Ответить
    • показать все, что скрытоДельфи сам по себе кал
      Ответить
    • для 7-ого класса недурно
      Ответить
    • Давайте введём возрастной ценз авторов кода. Хотя бы курса до третьего.
      Ответить
      • Не, хотя бы 2 года стажа.
        Ответить
        • Ну, кто-то же будет сопровождать код, написанный в первые два года.
          Ответить
          • матан-каптча и что-нибудь из интергрального исчисления
            пропустит вундеркинда и отгонит 3 курс педоучилища
            Ответить
            • Господа, я уже много лет назад окончил высшее учебное заведение (Московский Авиационный Институт, 3-ий фак, Автоматизированных систем обработки информации и управления), перед этим получил средне-специальное образование в техникуме (МГКИТ на курской, 2203 - Программное обеспечение вычислительной техники и автоматизированных систем). Если вы думаете, что меня не гоняли по матану, статистике, матанализу и еще куче дисцеплин - вы ошибаетесь. Сей код - именно что из школы, просто случайно нашел в бекапах. Согласитесь, что в то время, когда еще даже не было интернета, а только пирацкие диски со спеками это все было не так просто... Не понравилось - ну все, удаляюсь.
              Ответить
              • Бля, народ, читаю его и думаю - оставьте простую капчу, она тоже некоторых отпугивает
                Ответить
                • >простую капчу, она тоже некоторых отпугивает
                  Ага, ботов и почти слепых.
                  Ответить
              • * интегрального
                ну вот, QED, МАИ - пропустит, а текстильный - нет, как и задумывалось
                Ответить
                • >текстильный
                  Вы думаете, большую часть лаб сюда постят студенты данного учебного заведения?
                  Ответить
    • показать все, что скрытоvanished
      Ответить

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