![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Файл или каталог. [D7, XP]
Wood © (2006-03-14 03:01:00)Что-то сообразить не могу: как узнать в строке пути к чему либо на конце строки файл или каталог?
Спсибо.
Wood (2006-03-14 11:10:00) [1]
> Плохиш © (14.03.06 11:06) [18]
Если б я только этим был сейчас занят, то да :)
Wood (2006-03-14 11:08:00) [2]все-таки сам не сообразил я [2]... конфуз..:(
Плохиш (2006-03-14 11:06:00) [3]
> Wood (14.03.06 07:34) [6]
> Wood (14.03.06 11:00) [16]
Интересно, за 3,5 часа можно было справку наизусть выучить.
Джо (2006-03-14 11:03:00) [4]
> извините, я все же не понял faDirectory - это где и что?
Можешь заменить на FILE_ATTRIBUTE_DIRECTORY.
---
> А как из приведенной Вами функции я узнаю каталог это или
> файл?
Вызвав эту функцию и передав ей в параметре путь к файлу или директории.
Например,
if IsDirectory ('d:\temp') then
ShowMessage ('Папка')
else
ShowMessage ('Файл');
Wood (2006-03-14 11:00:00) [5]Но вообщем-то я понял!
<> 0 - каталог, иначе - файл. Так?
Спасибо огромное!
Wood (2006-03-14 10:57:00) [6]при проверке faDirectory возвращает 16 иногда 17 а иногда 32 (когда каталог, по-моему)...?
Wood (2006-03-14 10:51:00) [7]> Джо [13]
извините, я все же не понял faDirectory - это где и что?
А как из приведенной Вами функции я узнаю каталог это или файл?
Ну, Wood я...:)
Джо (2006-03-14 10:30:00) [8]
> Wood
function IsDirectrory (Path: string): Boolean;
begin
Result := GetFileAttributes(PChar(Path)) and faDirectory <> 0
end;
Wood (2006-03-14 09:39:00) [9]не, "Мои документы", или подобные каталоги с русским названием в "Documents and Settings", что ли...
Wood (2006-03-14 09:35:00) [10]из-за каталога Documents and Settings, видимо, глючит.
Другие папки попробовал с русскими названиями, вроде работает.
В любом случае, спасибо за помощь.
Wood (2006-03-14 09:05:00) [11]
> Без разницы (но попробуй на всякий случай)
да, без разницы.
> Только с этой папкой ?
>
Пока с другими не пробовал, сейчас...
balepa (2006-03-14 08:31:00) [12]
> Virgo_Style © (14.03.06 07:51) [8]
> убери слэш
Без разницы (но попробуй на всякий случай)
> Edit1.Text:='X:\Documents and Settings\MyProfile\Мои документы\Папка
> обмена\' - результата в case нет.
Только с этой папкой ?
Virgo_Style (2006-03-14 07:51:00) [13]убери слэш
Wood (2006-03-14 07:40:00) [14]предупреждая вопрос о наличии файла/папки - отвечаю: они реально имеются на диске (выбирал из OpenDialog'a)
Wood (2006-03-14 07:34:00) [15]Edit1.Text:='X:\Documents and Settings\MyProfile\Мои документы\Папка обмена\my.txt' - результат FILE_ATTRIBUTE_ARCHIVE
;
try
case GetFileAttributes(PChar(Edit1.text)) of
FILE_ATTRIBUTE_ARCHIVE: Label1.Caption:='FILE_ATTRIBUTE_ARCHIVE';
FILE_ATTRIBUTE_COMPRESSED: Label1.Caption:='FILE_ATTRIBUTE_COMPRESSED';
FILE_ATTRIBUTE_DIRECTORY: Label1.Caption:= 'FILE_ATTRIBUTE_DIRECTORY';
FILE_ATTRIBUTE_HIDDEN: Label1.Caption:= 'FILE_ATTRIBUTE_HIDDEN';
FILE_ATTRIBUTE_NORMAL: Label1.Caption:= 'FILE_ATTRIBUTE_NORMAL';
FILE_ATTRIBUTE_OFFLINE: Label1.Caption:= 'FILE_ATTRIBUTE_OFFLINE';
FILE_ATTRIBUTE_READONLY: Label1.Caption:= 'FILE_ATTRIBUTE_READONLY';
FILE_ATTRIBUTE_SYSTEM: Label1.Caption:= 'FILE_ATTRIBUTE_SYSTEM';
FILE_ATTRIBUTE_TEMPORARY: Label1.Caption:= 'FILE_ATTRIBUTE_TEMPORARY';
end;{case}
except
end;
Edit1.Text:='X:\Documents and Settings\MyProfile\Мои документы\Папка обмена\' - результата в case нет.
balepa (2006-03-14 07:26:00) [16]У всех работает (мож не у всех но у меня точно работает). Код покажи
Wood (2006-03-14 06:16:00) [17]FILE_ATTRIBUTE_ARCHIVE: получаем результат функции GetFileAttributes() - при наличии в пути файла с атрибутом "архивный"
FILE_ATTRIBUTE_DIRECTORY: результат - каталог.
Но вот незадача! Если в конце пути попадается каталог с русскимисимволами, например,
X:\Documents and Settings\MyProfile\Мои документы\Папка обмена\my.txt - определяется - FILE_ATTRIBUTE_ARCHIVE,
а X:\Documents and Settings\MyProfile\Мои документы\Папка обмена\ -
неопределяется FILE_ATTRIBUTE_DIRECTORY!
Или ...не уверен, что автор сабжа сможет это "сообразить".
Wood (2006-03-14 05:46:00) [18]Ну, может туплю, конечно, но я сначала использовал DirectoryExists() и FileExists(), но потом понял, что это не совсем то, что мне нужно. Поэтому, спасибо за совет - "GetFileAttribute". Посмотрю с чем это едят :)
Германн (2006-03-14 03:21:00) [19]
> Джо © (14.03.06 03:05) [1]
>
> GetFileAttribute с проверкой на вхождение атрибута faDirectory
> сойдет?
Может быть сойдёт.
Но не уверен, что автор сабжа сможет это "сообразить".
Токмо вот
> как узнать в строке пути к чему либо на конце строки
- смущает.
Джо (2006-03-14 03:05:00) [20]GetFileAttribute с проверкой на вхождение атрибута faDirectory сойдет?