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

Вниз

Свойства файла   Найти похожие ветки 

 
Dmitry_04   (2004-12-02 02:23) [0]

Как определить размер файла зная его путь? Как определить приложение по умолчанию? Как определить название типа файла, т.е. например TXT - Текстовый документ, JPG - Рисунок JPEG?


 
jack128 ©   (2004-12-02 02:35) [1]

Dmitry_04   (02.12.04 2:23)
Как определить размер файла зная его путь

открыть (CreateFile), GetFileSize, закрыть (CloseHandle). Или FindFirstFile, FindNextFile, FindClose
Как определить приложение по умолчанию? в смысле ассоциированное с данным типом файла? FindExecutable?


 
Dmitry_04   (2004-12-02 03:02) [2]

по умолчанию, в смысле кликнешь на файл два раза мышко, какая программа запускается...


 
Dmitry_04   (2004-12-02 03:04) [3]

а если этот файл например IniFile? И он уже открыт Ini:=TIniFile.Create(...) никакой ошибки не будет при определении размера?


 
jack128 ©   (2004-12-02 03:36) [4]

Dmitry_04   (02.12.04 3:04) [3]
Ini:=TIniFile.Create(...)

этот код не открывает файл. А в общем случае - не знаю. FindXXX долны работатьт в любом случае.


 
Dmitry_04   (2004-12-02 11:32) [5]

Ясно... а как мне узнать название типа файла и приложение которое его отррывает?


 
Dmitry_04   (2004-12-03 16:04) [6]

Никто не знает? С типом файла и размером я разобрался... ура!

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;


Но как мне определить приложение, которое его открывает? А еще как определить дату создания и изменения файла, зная его путь?


 
Piton ©   (2004-12-03 16:30) [7]

Идешь в реестр и находишь, раз знаешь расширение этого файла...
Там все: и какой программой редактируется и какой исполняется (открывается, воспроизводится, показывается и т.д.)


 
Dmitry_04   (2004-12-03 16:46) [8]

Да... Но там я смотрел... там только путь к exe-файлу программы и все...


 
begin...end ©   (2004-12-03 17:18) [9]

> [6] Dmitry_04   (03.12.04 16:04)

> А еще как определить дату создания и изменения файла, зная
> его путь?

FindFirst, TSearchRec.FindData.ftCreationTime, TSearchRec.FindData.ftLastWriteTime, FileTimeToLocalFileTime, FileTimeToSystemTime.


 
Dmitry_04   (2004-12-06 17:52) [10]

Как же быть с программой, которая открывает этот файл?


 
Dmitry_04   (2004-12-06 18:33) [11]

А если прочитать из рееста путь к программе... Можно ли узнать по exe-файлу название программы?


 
Fay ©   (2004-12-06 19:13) [12]

2 Dmitry_04   (06.12.04 18:33) [11]
Чем FindExecutable не угодил?


 
Dmitry_04   (2004-12-07 18:42) [13]

FindExecutable он же выдает только путь к программе которая открывает этот файл, а мне нужно название... Т.е. например для файла типа TXT, должна выдавать не "C:\WINDOWS\system32\NOTEPAD.EXE", а "Блокнот".


 
jack128 ©   (2004-12-07 19:12) [14]

Ты предоставь определение, что такое название программы , а там и поговорим ;-)


 
Dmitry_04   (2004-12-07 19:39) [15]

Когда зайдешь в свойства файла там написано

Приложение: Блокнот

Вот мне бы тоже так сделать, чтобы приложение это определяло.


 
novice_man ©   (2004-12-07 19:51) [16]

Поищи в хелпе дельфи: GetFileVersionInfoSize
Точно есть!


 
Dmitry_04   (2004-12-07 20:54) [17]

А GetFileVersionInfoSize использовать уже к exe-файлу, который находит FindExecutable?


 
Dmitry_04   (2004-12-08 13:25) [18]

Я никак не пойму как работать с GetFileVersionInfoSize.
Она как я понял возвращает только размер информации о файле...


 
Dmitry_04   (2004-12-08 14:28) [19]

???


 
Dmitry_04   (2004-12-08 14:31) [20]

???


 
panov ©   (2004-12-08 14:37) [21]

Не надо каждый час пустые сообщения писать.


 
novice_man ©   (2004-12-08 15:50) [22]

Пример:

 

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;



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

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

Наверх




Память: 0.52 MB
Время: 0.038 c
14-1102609969
12345
2004-12-09 19:32
2004.12.26
Add-on for Internet Explorer.


1-1102489974
snake1977
2004-12-08 10:12
2004.12.26
Наследник от TCustomComboBox


14-1102075590
euru
2004-12-03 15:06
2004.12.26
Class Helpers (.NET)


1-1102817066
Hoot
2004-12-12 05:04
2004.12.26
У меня в компоненте есть FItems : TStrings; Как мне перехватить


9-1087845784
Darthman
2004-06-21 23:23
2004.12.26
А не устраивать ли нам небольшие конкурсы по кодингу?