![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Свойства файла [D7, WinXP]
Dmitry_04 © (2004-12-02 02:23:00)Как определить размер файла зная его путь? Как определить приложение по умолчанию? Как определить название типа файла, т.е. например TXT - Текстовый документ, JPG - Рисунок JPEG?
novice_man (2004-12-08 15:50:00) [1]Пример:
var
VIHandle : LongInt;
VSize : LongInt;
VData : Pointer;
VVers : Pointer;
Len : Word;
FileName : String;
const
Prefix = '\StringFileInfo\040904E4\';
function GetVerValue(Value : String) : String;
var
ItemName : String;
begin
ItemName := Prefix + Value + chr(0);
Result := '';
If VerQueryValue(VData,@ItemName[1],VVers,Len)
Then
If Len > 0
Then
Begin
If Len > 255
Then
Len := 255;
Move(VVers^, Result[1], Len);
Result[0] := Chr(Len);
End;
end;
begin
FileName := Application.EXEName + chr(0);
VSize := GetFileVersionInfoSize(@FileName[1], VIHandle);
If VIHandle <> 0
Then
Begin
GetMem(VData, VSize);
Try
If GetFileVersionInfo(@FileName[1], VIHandle, VSize, VData)
Then
Begin
ProductName.Caption := GetVerValue('ProductName');
Version.Caption := GetVerValue('ProductVersion');
Copyright.Caption := GetVerValue('LegalCopyright');
Comments.Caption := GetVerValue('FileDescription');
End;
Finally
FreeMem(VData, VSize);
End;
End;
end;
panov (2004-12-08 14:37:00) [2]Не надо каждый час пустые сообщения писать.
Dmitry_04 (2004-12-08 14:31:00) [3]???
Dmitry_04 (2004-12-08 14:28:00) [4]???
Dmitry_04 (2004-12-08 13:25:00) [5]Я никак не пойму как работать с GetFileVersionInfoSize.
Она как я понял возвращает только размер информации о файле...
Dmitry_04 (2004-12-07 20:54:00) [6]А GetFileVersionInfoSize использовать уже к exe-файлу, который находит FindExecutable?
novice_man (2004-12-07 19:51:00) [7]Поищи в хелпе дельфи: GetFileVersionInfoSize
Точно есть!
Dmitry_04 (2004-12-07 19:39:00) [8]Когда зайдешь в свойства файла там написано
Приложение: Блокнот
Вот мне бы тоже так сделать, чтобы приложение это определяло.
jack128 (2004-12-07 19:12:00) [9]Ты предоставь определение, что такое название программы , а там и поговорим ;-)
Dmitry_04 (2004-12-07 18:42:00) [10]FindExecutable он же выдает только путь к программе которая открывает этот файл, а мне нужно название... Т.е. например для файла типа TXT, должна выдавать не "C:\WINDOWS\system32\NOTEPAD.EXE", а "Блокнот".
Fay (2004-12-06 19:13:00) [11]2 Dmitry_04 (06.12.04 18:33) [11]
Чем FindExecutable не угодил?
Dmitry_04 (2004-12-06 18:33:00) [12]А если прочитать из рееста путь к программе... Можно ли узнать по exe-файлу название программы?
Dmitry_04 (2004-12-06 17:52:00) [13]Как же быть с программой, которая открывает этот файл?
begin...end (2004-12-03 17:18:00) [14]> [6] Dmitry_04 (03.12.04 16:04)
> А еще как определить дату создания и изменения файла, зная
> его путь?
FindFirst, TSearchRec.FindData.ftCreationTime, TSearchRec.FindData.ftLastWriteTime, FileTimeToLocalFileTime, FileTimeToSystemTime.
Dmitry_04 (2004-12-03 16:46:00) [15]Да... Но там я смотрел... там только путь к exe-файлу программы и все...
Piton (2004-12-03 16:30:00) [16]Идешь в реестр и находишь, раз знаешь расширение этого файла...
Там все: и какой программой редактируется и какой исполняется (открывается, воспроизводится, показывается и т.д.)
Dmitry_04 (2004-12-03 16:04:00) [17]Никто не знает? С типом файла и размером я разобрался... ура!
function GetFileSize(namefile: string): Integer;
var
InfoFile: TSearchRec;
AttrFile: Integer;
ErrorReturn: Integer;
begin
AttrFile := $0000003F; {Any file}
ErrorReturn := FindFirst(namefile, AttrFile, InfoFile);
if ErrorReturn <> 0 then
Result := -1 {в случае, если файл не найден}
else
Result := InfoFile.Size; {Размер файла в байтах}
FindClose(InfoFile);
end;
function MrsGetFileType(const strFilename: string): string;
var
FileInfo: TSHFileInfo;
begin
FillChar(FileInfo, SizeOf(FileInfo), #0);
SHGetFileInfo(PChar(strFilename), 0, FileInfo, SizeOf(FileInfo), SHGFI_TYPENAME);
Result := FileInfo.szTypeName;
end;
Но как мне определить приложение, которое его открывает? А еще как определить дату создания и изменения файла, зная его путь?
Dmitry_04 (2004-12-02 11:32:00) [18]Ясно... а как мне узнать название типа файла и приложение которое его отррывает?
jack128 (2004-12-02 03:36:00) [19]Dmitry_04 (02.12.04 3:04) [3]
Ini:=TIniFile.Create(...)
этот код не открывает файл. А в общем случае - не знаю. FindXXX долны работатьт в любом случае.
Dmitry_04 (2004-12-02 03:04:00) [20]а если этот файл например IniFile? И он уже открыт Ini:=TIniFile.Create(...) никакой ошибки не будет при определении размера?