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; //удаление успешно
}
Имена файлов
Никто не встречался с такой проблемой как, вытягивание имён файлов под DOS ?
стандартные функции (findfirst, findnext с dir.h)
получают имена файлов формата 8+3 т.е обрезает имя и вставляет тильду (STARCR~1.exe)...
как получить полное имя?
помогите плз или дайте ссылку на лит-ру где обьясняется процес получения имени с фат
Цитата:
Originally posted by Гад
Наверно не совсем правильно поместил тему...
Никто не встречался с такой проблемой как, вытягивание имён файлов под DOS ?
стандартные функции (findfirst, findnext с dir.h)
получают имена файлов формата 8+3 т.е обрезает имя и вставляет тильду (STARCR~1.exe)...
как получить полное имя?
помогите плз или дайте ссылку на лит-ру где обьясняется процес получения имени с фат
Наверно не совсем правильно поместил тему...
Никто не встречался с такой проблемой как, вытягивание имён файлов под DOS ?
стандартные функции (findfirst, findnext с dir.h)
получают имена файлов формата 8+3 т.е обрезает имя и вставляет тильду (STARCR~1.exe)...
как получить полное имя?
помогите плз или дайте ссылку на лит-ру где обьясняется процес получения имени с фат
http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx
Там есть разделы начиная с "FAT Long Directory Entries", которые тебе помогут разобраться.
Цитата:
Originally posted by Ramon
http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx
Там есть разделы начиная с "FAT Long Directory Entries", которые тебе помогут разобраться.
http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx
Там есть разделы начиная с "FAT Long Directory Entries", которые тебе помогут разобраться.
пасиб
ф-ция DeleteFile и соотвецтвенно XDelete работают не корректно...
помогите разшифровать в структуре LFN даты
инфа по длинным файлам:
http://masters.donntu.edu.ua/2001/fvti/matsak/diss/lfn/
и подкорректируйте вышеуказаные функции плз если можете...
и ещё у мня есть архив THelp - хелп по функциям прерывания... модеры если нужно, отпишитесь сюда или на мыло.
ф-ция DeleteFile и соотвецтвенно XDelete работают не корректно...
помогите разшифровать в структуре LFN даты
инфа по длинным файлам:
http://masters.donntu.edu.ua/2001/fvti/matsak/diss/lfn/
и подкорректируйте вышеуказаные функции плз если можете...
и ещё у мня есть архив THelp - хелп по функциям прерывания... модеры если нужно, отпишитесь сюда или на мыло [email]barabanchik@inbox.ru[/email].
и ещё... сори за флуд на главной странице в коментариях... перепутал:{
Цитата:
Originally posted by Гад
воть хедеры для длинных имён файлов...
ф-ция DeleteFile и соотвецтвенно XDelete работают не корректно...
помогите разшифровать в структуре LFN даты
инфа по длинным файлам:
http://masters.donntu.edu.ua/2001/fvti/matsak/diss/lfn/
и подкорректируйте вышеуказаные функции плз если можете...
и ещё у мня есть архив THelp - хелп по функциям прерывания... модеры если нужно, отпишитесь сюда или на мыло [email]barabanchik@inbox.ru[/email].
и ещё... сори за флуд на главной странице в коментариях... перепутал:{
воть хедеры для длинных имён файлов...
ф-ция DeleteFile и соотвецтвенно XDelete работают не корректно...
помогите разшифровать в структуре LFN даты
инфа по длинным файлам:
http://masters.donntu.edu.ua/2001/fvti/matsak/diss/lfn/
и подкорректируйте вышеуказаные функции плз если можете...
и ещё у мня есть архив THelp - хелп по функциям прерывания... модеры если нужно, отпишитесь сюда или на мыло [email]barabanchik@inbox.ru[/email].
и ещё... сори за флуд на главной странице в коментариях... перепутал:{
Код:
А по поводу 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
Юзай '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
хотя коечё всётаки придумал пасиб за помощ...:)