PDA

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


gizmo
09.04.2007, 01:53
вот текст программы
#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
программа должна вывести список имен всех? файлов, директорий указанной директории и их атрибуты.
в реальности же получается
Listing of c:\*.*
Debug
- Copyright Borland // если Debug - директория
find.exe
- Borland Intl. // хз, мб во всех других случаях??
....
....



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

Что вы думаете по этому вопросу?

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

Когда писали программы под Win 3.x, о существовании XP даже догадываться не могли. Однако, они работают. Есть такая вещь, как обратная совместимость.

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

gizmo
09.04.2007, 11:36
Когда писали программы под Win 3.x, о существовании XP даже догадываться не могли. Однако, они работают. Есть такая вещь, как обратная совместимость.


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

_Great_
09.04.2007, 22:47
а в каком виде должен выводить?
почему выводит мусор?
почему скрытые файлы не видит вообще?
(кста, для папки и файла - мусор различный)
пора забыть про досовский поиск файлов и юзать FindFirstFile / FindNextFile (win32 api)

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

gizmo
09.04.2007, 23:40
Я не просил советовать мне сменить среду программирования - если приходится писать в 3.1 - значит, так нужно. мог бы - сам на api перешел, но за участие все равно спасибо, Great.
Кста, кому интересно - я нашел, в чем была проблема.
Как я изначально и предположил, косяк в файловой системе.
с системой нтфс пахать _прямо_ данная прога не будет никогда. можно ее , конечно, довести, но это извращение, практически, метод подбора.
И дело вовсе не в обратной совместимости - когда производишь поиск в нтфс данными функциями в ffblk лезет всякое дерьмо,
о котором в 1991 году даже и не догадывались. (типа квот, разграничений по правам доступа, по владельцу)

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

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


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

_Great_
09.04.2007, 23:47
итог - не пытайтесь юзать такие проги в фс выше fat 32.]
итог - выбрасывайте свой дос на 5дюймовых дискетках, на дворе 21 век))

gizmo
10.04.2007, 00:08
ностальгия не гложет?
DiBa, 25020720.10
http://dump.ru/files/4/431084310/

кста, дискетки у меня 3,5"
новейшая технология. 1,44 мб, можно извратиться, 2+ МБ записать=)

_Great_
10.04.2007, 00:14
ностальгия не гложет?
нед) мне както больше интересно реверсить ядро винды.. хотя я помню досенг :)

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

gizmo
24.04.2007, 01:33
вкурил, уже почти как надо пашет