проблема вывода атрибутов файлов (c++)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by gizmo, 9 Apr 2007.

  1. gizmo

    gizmo Elder - Старейшина

    Joined:
    21 Dec 2006
    Messages:
    126
    Likes Received:
    28
    Reputations:
    9
    вот текст программы
    Code:
    #include <iostream.h>
    #include <stdio.h>
    #include <dir.h>
    #include <conio.h>
    #include <dos.h>
    #include <string.h>
    void search(char* a)
    {  clrscr();
       struct find_t ffblk;
       int done;
       cout<<"Listing of"<<" "<<a;
       printf("\n");
       done = _dos_findfirst(a,FA_DIREC,&ffblk);
       while (!done)
       {
      printf("  %s\n",  ffblk.name);
      printf("  %s\n", ffblk.attrib);
       done = _dos_findnext(&ffblk);
       }
       }
       void main()
      {
      char* path_by_user;
      clrscr();
      scanf("%s", path_by_user);
      search(path_by_user);
      getch();
      }
    Компилирую в Borland c++ 3.1
    программа должна вывести список имен всех? файлов, директорий указанной директории и их атрибуты.
    в реальности же получается
    Code:
    Listing of c:\*.*
    Debug
    - Copyright Borland // если Debug - директория
    find.exe 
    - Borland Intl. // хз, мб во всех других случаях??
    ....
    ....
    

    вопрос: почему не выводит аттрибуты в виде FA_DIREC
    FA_NORMAL
    FA_RDONLY
    ?
    есть предположение, что у среды проблемы с нтфс - 3.1 версия компилятора вышла в 1991 году, о существовании нтфс даже догадываться не могли. (?)

    Что вы думаете по этому вопросу?
     
    #1 gizmo, 9 Apr 2007
    Last edited: 9 Apr 2007
  2. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    Когда писали программы под Win 3.x, о существовании XP даже догадываться не могли. Однако, они работают. Есть такая вещь, как обратная совместимость.

    а почему оно должно выводить число (атрибуты) в виде названий констант? хотя строки как у тебя не сильно лучше..
     
  3. gizmo

    gizmo Elder - Старейшина

    Joined:
    21 Dec 2006
    Messages:
    126
    Likes Received:
    28
    Reputations:
    9
    а в каком виде должен выводить?
    почему выводит мусор?
    почему скрытые файлы не видит вообще?
    (кста, для папки и файла - мусор различный)
     
  4. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    пора забыть про досовский поиск файлов и юзать FindFirstFile / FindNextFile (win32 api)

    на дворе все-таки уже 21 век, а ты все с топором ходишь и "мабумба" кричишь :D
     
  5. gizmo

    gizmo Elder - Старейшина

    Joined:
    21 Dec 2006
    Messages:
    126
    Likes Received:
    28
    Reputations:
    9
    Я не просил советовать мне сменить среду программирования - если приходится писать в 3.1 - значит, так нужно. мог бы - сам на api перешел, но за участие все равно спасибо, Great.
    Кста, кому интересно - я нашел, в чем была проблема.
    Как я изначально и предположил, косяк в файловой системе.
    с системой нтфс пахать _прямо_ данная прога не будет никогда. можно ее , конечно, довести, но это извращение, практически, метод подбора.
    И дело вовсе не в обратной совместимости - когда производишь поиск в нтфс данными функциями в ffblk лезет всякое дерьмо,
    о котором в 1991 году даже и не догадывались. (типа квот, разграничений по правам доступа, по владельцу)

    в фс fat12 или fat16 все работает норм, в система fat 32 уже появляются косяки - изменено кол-во памяти, выделяемое под имя файла.

    итог - не пытайтесь юзать такие проги в фс выше fat 32.


    П.С. Смысла писать прогу, которая еще до своего рождения устарела не вижу. But I have to =(
     
  6. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    ]
    итог - выбрасывайте свой дос на 5дюймовых дискетках, на дворе 21 век))
     
  7. gizmo

    gizmo Elder - Старейшина

    Joined:
    21 Dec 2006
    Messages:
    126
    Likes Received:
    28
    Reputations:
    9
    ностальгия не гложет?
    DiBa, 25020720.10
    http://dump.ru/files/4/431084310/

    кста, дискетки у меня 3,5"
    новейшая технология. 1,44 мб, можно извратиться, 2+ МБ записать=)
     
    #7 gizmo, 10 Apr 2007
    Last edited: 10 Apr 2007
  8. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    нед) мне както больше интересно реверсить ядро винды.. хотя я помню досенг :)

    mov dx, offset heck
    mov ah, 9
    int 21h
    int 20h
    heck db 'MEGA XEK!!!!!',0dh,0ah,'$'
     
  9. gizmo

    gizmo Elder - Старейшина

    Joined:
    21 Dec 2006
    Messages:
    126
    Likes Received:
    28
    Reputations:
    9
    вкурил, уже почти как надо пашет