Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Имена файлов

14K
03 декабря 2005 года
Гад
5 / / 03.12.2005
Наверно не совсем правильно поместил тему...

Никто не встречался с такой проблемой как, вытягивание имён файлов под DOS ?

стандартные функции (findfirst, findnext с dir.h)
получают имена файлов формата 8+3 т.е обрезает имя и вставляет тильду (STARCR~1.exe)...
как получить полное имя?
помогите плз или дайте ссылку на лит-ру где обьясняется процес получения имени с фат
260
03 декабря 2005 года
Ramon
1.1K / / 16.08.2003
Цитата:
Originally posted by Гад
Наверно не совсем правильно поместил тему...

Никто не встречался с такой проблемой как, вытягивание имён файлов под DOS ?

стандартные функции (findfirst, findnext с dir.h)
получают имена файлов формата 8+3 т.е обрезает имя и вставляет тильду (STARCR~1.exe)...
как получить полное имя?
помогите плз или дайте ссылку на лит-ру где обьясняется процес получения имени с фат


http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx

Там есть разделы начиная с "FAT Long Directory Entries", которые тебе помогут разобраться.

14K
03 декабря 2005 года
Гад
5 / / 03.12.2005
Цитата:
Originally posted by Ramon
http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx

Там есть разделы начиная с "FAT Long Directory Entries", которые тебе помогут разобраться.



пасиб

14K
17 декабря 2005 года
Гад
5 / / 03.12.2005
воть хедеры для длинных имён файлов...

ф-ция DeleteFile и соотвецтвенно XDelete работают не корректно...

помогите разшифровать в структуре LFN даты
инфа по длинным файлам:
http://masters.donntu.edu.ua/2001/fvti/matsak/diss/lfn/

и подкорректируйте вышеуказаные функции плз если можете...

и ещё у мня есть архив THelp - хелп по функциям прерывания... модеры если нужно, отпишитесь сюда или на мыло.
14K
17 декабря 2005 года
Гад
5 / / 03.12.2005
воть хедеры для длинных имён файлов...

ф-ция DeleteFile и соотвецтвенно XDelete работают не корректно...

помогите разшифровать в структуре LFN даты
инфа по длинным файлам:
http://masters.donntu.edu.ua/2001/fvti/matsak/diss/lfn/

и подкорректируйте вышеуказаные функции плз если можете...

и ещё у мня есть архив THelp - хелп по функциям прерывания... модеры если нужно, отпишитесь сюда или на мыло [email]barabanchik@inbox.ru[/email].
и ещё... сори за флуд на главной странице в коментариях... перепутал:{
260
17 декабря 2005 года
Ramon
1.1K / / 16.08.2003
Цитата:
Originally posted by Гад
воть хедеры для длинных имён файлов...

ф-ция DeleteFile и соотвецтвенно XDelete работают не корректно...

помогите разшифровать в структуре LFN даты
инфа по длинным файлам:
http://masters.donntu.edu.ua/2001/fvti/matsak/diss/lfn/

и подкорректируйте вышеуказаные функции плз если можете...

и ещё у мня есть архив THelp - хелп по функциям прерывания... модеры если нужно, отпишитесь сюда или на мыло [email]barabanchik@inbox.ru[/email].
и ещё... сори за флуд на главной странице в коментариях... перепутал:{



Код:
int DeleteFile(char *filename)
{
 int i,j=0,k=0;
 char name[0x100];
 char curdir[0x100];
 char chdir[0x100];
 int curdrive = _getdrive();

 for(i=strlen(filename);i>=0;i--)
  {
   if(filename == '\\') break;
  }
 for(j=i+1;j<=strlen(filename);j++)
    name[k++] = filename[j];
 name[k] = '\0'

 for(j=0;j<=i;j++)
   {
    chdir[j] = filename[j];
   }
 chdir[j] = '\0';

 GetCurDir(curdrive,curdir);
 ChangeCurDir(chdir);
 REGPACK R;
 R.r_ax = 0x7141;
 R.r_ds = FP_SEG(name);
 R.r_dx = FP_OFF(name);
 R.r_si = 0x0000;
 R.r_cx = 0x0000;

 intr(0x21,&R);
 ChangeCurDir(curdir);
 if(R.r_flags & 1)
  return -R.r_ax; // возврат ошибки

 return 0; //удаление успешно
}


А по поводу XDelete можно заюзать эту же функцию, добавив параметр 'атрибут'.

PS: Interrupt 21h Function 7141h
Deletes the given file or files. If the specified filename contains a wildcard character, this function can delete multiple files that match the wildcard.

mov ax, 7141h ; Delete File
mov ch, MustMatchAttrs ; see below
mov cl, SearchAttrs ; see below
mov dx, seg Filename ; see below
mov ds, dx
mov dx, offset Filename
mov si, WildcardAndAttrs ; see below
int 21h

jc error

Parameters

MustMatchAttrs

Additional filter on the attributes specified in SearchAttrs. This parameter can be a combination of these values:

_A_NORMAL (0000h)
The file can be read from or written to. This value is valid only if used alone.
_A_RDONLY (0001h)
The file can be read from, but not written to.
_A_HIDDEN (0002h)
The file is hidden and does not appear in an ordinary directory listing.
_A_SYSTEM (0004h)
The file is part of the operating system or is used exclusively by it.
_A_VOLID (0008h)
The name specified by Filename is used as the volume label for the current medium.
_A_SUBDIR (0010h)
The name specified by Filename is used as a directory, not a file.
_A_ARCH (0020h)
The file is an archive file. Applications use this value to mark files for backup or removal.


SearchAttrs

File attributes to search for. This parameter can be a combination of these values:

_A_NORMAL (0000h)
_A_RDONLY (0001h)
_A_HIDDEN (0002h)
_A_SYSTEM (0004h)
_A_VOLID (0008h)
_A_SUBDIR (0010h)
_A_ARCH (0020h)


Filename

Address of a null-terminated string specifying the name of the file to delete. If WildcardAndAttrs is 1, the "*" and "?" wildcard characters are permitted in the filename. Long filenames are allowed.

WildcardAndAttrs

Search criteria. This parameter must be one of these values:

0 Wildcard characters are not allowed in Filename. Any specified attributes are ignored.
1 Wildcard characters are allowed in Filename. Files with specified attributes are matched.


Return Value

Clears the carry flag if successful. Otherwise, the function sets the carry flag and sets the AX register to an error value.

Remarks

Wildcard searches are more flexible in Windows 95 than in MS-DOS. Both long filenames and aliases are considered in searches. For example, *1 finds Windows 95 filenames (both long filenames and aliases) that end in a 1 and *mid* finds filenames that contain the characters mid. In MS-DOS and in Windows 95 searching on real-mode FAT directories, all characters after the first * are ignored.
For more information about how MustMatchAttrs and SearchAttrs are used, see the comments for Find First File (Interrupt 21h Function 714Eh).

Find First File and subsequent calls to Find Next File (Interrupt 21h Function 714Fh) use the following algorithm to match the attributes of a file or directory (referred to as Attributes in the algorithm) against MustMatchAttrs and SearchAttrs.

if ((((<MustMatchAttrs> & ~<Attributes>) & 0x3F) == 0)
&& (((~<SearchAttrs> & <Attributes>) & 0x1E) == 0))
{
return the file or directory name
}
else
{
continue searching for the next name
}


The following table lists the MustMatchAttrs and SearchAttrs values for some common searches where the specified filename is "*.*". In the table, the word normal means that the read only, hidden, or system attributes have not been set. Parentheses are used to indicate that a file or directory has more than one attribute. For example, (hidden and system) indicates that a file or directory has both the hidden attribute and the system attribute.

MustMatchAttrs SearchAttrs Find results
10h 10h All normal directories
10h 12h All normal and hidden directories
10h 14h All normal and system directories
10h 16h All normal, hidden, system and (hidden and system) directories
12h 12h All hidden directories
14h 14h All system directories
16h 16h All (hidden and system) directories
00h 00h All normal files
00h 01h All normal and read only files
00h 02h All normal and hidden files
00h 04h All normal and system files
00h 06h All normal, hidden, system, and (hidden and system) files
00h 10h All normal files and directories
01h 01h All read only files
02h 02h All hidden files
02h 06h All hidden and (hidden and system) files
260
17 декабря 2005 года
Ramon
1.1K / / 16.08.2003
По поводу дат:
Юзай 'Interrupt 21h Function 71A6h', предварительно открыв файл спомощью 'Interrupt 21h Function 716Ch' с режимом доступа OPEN_ACCESS_RO_NOMODLASTACCESS (0004h) и 'Interrupt 21h Function 71A7h Minor Code 0h', 'Interrupt 21h Function 71A7h Minor Code 1h' соответственно.


PS: Подробнее см. тут
http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/win9x/95func_2bvs.asp
14K
18 декабря 2005 года
Гад
5 / / 03.12.2005
хм по атрибутам это хорошо, но XDelete это рекурсивное удаление вложеных файлов и папок..

хотя коечё всётаки придумал пасиб за помощ...:)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог