Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Свойства файла [D7, WinXP]


Страницы:   1 2

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(...) никакой ошибки не будет при определении размера?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо