Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.26;
Скачать: CL | DM;

Вниз

Файл или каталог.   Найти похожие ветки 

 
Wood   (2006-03-14 03:01) [0]

Что-то сообразить не могу: как узнать в строке пути к чему либо на конце строки файл  или каталог?
Спсибо.


 
Джо ©   (2006-03-14 03:05) [1]

GetFileAttribute с проверкой на вхождение атрибута faDirectory сойдет?


 
Германн ©   (2006-03-14 03:21) [2]


> Джо ©   (14.03.06 03:05) [1]
>
> GetFileAttribute с проверкой на вхождение атрибута faDirectory
> сойдет?


Может быть сойдёт.
Но не уверен, что автор сабжа сможет это "сообразить".
Токмо вот
>  как узнать в строке пути к чему либо на конце строки
- смущает.


 
Wood   (2006-03-14 05:46) [3]

Ну, может туплю, конечно, но я сначала использовал DirectoryExists() и FileExists(), но потом понял, что это не совсем то, что мне нужно. Поэтому, спасибо за совет - "GetFileAttribute". Посмотрю с чем это едят :)


 
Wood   (2006-03-14 06:16) [4]

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!
Или ...не уверен, что автор сабжа сможет это "сообразить".


 
balepa ©   (2006-03-14 07:26) [5]

У всех работает (мож не у всех но у меня точно работает). Код покажи


 
Wood   (2006-03-14 07:34) [6]

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 нет.


 
Wood   (2006-03-14 07:40) [7]

предупреждая вопрос о наличии файла/папки - отвечаю: они реально имеются на диске (выбирал из OpenDialog"a)


 
Virgo_Style ©   (2006-03-14 07:51) [8]

убери слэш


 
balepa ©   (2006-03-14 08:31) [9]


> Virgo_Style ©   (14.03.06 07:51) [8]
> убери слэш

Без разницы (но попробуй на всякий случай)


> Edit1.Text:="X:\Documents and Settings\MyProfile\Мои документы\Папка
> обмена\" - результата в case нет.


Только с этой папкой ?


 
Wood   (2006-03-14 09:05) [10]


> Без разницы (но попробуй на всякий случай)


да, без разницы.

> Только с этой папкой ?
>

Пока с другими не пробовал, сейчас...


 
Wood   (2006-03-14 09:35) [11]

из-за каталога Documents and Settings, видимо, глючит.
Другие папки попробовал с русскими названиями, вроде работает.
В любом случае, спасибо за помощь.


 
Wood   (2006-03-14 09:39) [12]

не, "Мои документы", или подобные каталоги с русским названием в "Documents and Settings", что ли...


 
Джо ©   (2006-03-14 10:30) [13]


> Wood  


function IsDirectrory (Path: string): Boolean;
begin
 Result := GetFileAttributes(PChar(Path)) and faDirectory <> 0
end;


 
Wood   (2006-03-14 10:51) [14]

>Джо [13]
извините, я все же не понял faDirectory - это где и что?
А как из приведенной Вами функции я узнаю каталог это или файл?
Ну, Wood я...:)


 
Wood   (2006-03-14 10:57) [15]

при проверке faDirectory возвращает 16 иногда 17 а иногда 32 (когда каталог, по-моему)...?


 
Wood   (2006-03-14 11:00) [16]

Но вообщем-то я понял!
<> 0 - каталог, иначе - файл. Так?
Спасибо огромное!


 
Джо ©   (2006-03-14 11:03) [17]


> извините, я все же не понял faDirectory - это где и что?

Можешь заменить на FILE_ATTRIBUTE_DIRECTORY.

---

> А как из приведенной Вами функции я узнаю каталог это или
> файл?
Вызвав эту функцию и передав ей в параметре путь к файлу или директории.
Например,
if IsDirectory ("d:\temp") then
 ShowMessage ("Папка")
else
 ShowMessage ("Файл");


 
Плохиш ©   (2006-03-14 11:06) [18]


> Wood   (14.03.06 07:34) [6]
> Wood   (14.03.06 11:00) [16]

Интересно, за 3,5 часа можно было справку наизусть выучить.


 
Wood   (2006-03-14 11:08) [19]

все-таки сам не сообразил я [2]... конфуз..:(


 
Wood   (2006-03-14 11:10) [20]


> Плохиш ©   (14.03.06 11:06) [18]

Если б я только этим был сейчас занят, то да :)



Страницы: 1 вся ветка

Текущий архив: 2006.03.26;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.046 c
4-1136460435
Arazel
2006-01-05 14:27
2006.03.26
Как прочитать/записать MBR из под Win9x


2-1141905461
fReeZMan
2006-03-09 14:57
2006.03.26
Help!!!! Help!!!


2-1142145894
Glex
2006-03-12 09:44
2006.03.26
Какой движок БД не требует никаких библиотек после компиляции?


1-1140513734
reboot
2006-02-21 12:22
2006.03.26
vcl inet40


2-1142189230
Dublicator
2006-03-12 21:47
2006.03.26
Поиск в стеке