Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.12.26;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.037 c
8-1096127670
miek
2004-09-25 19:54
2004.12.26
GLScene: анимация 3D-моделей


3-1101214895
MakNik
2004-11-23 16:01
2004.12.26
dxDBGrid


14-1101073567
Piter
2004-11-22 00:46
2004.12.26
А каким хуком можно внедриться в консольное приложение?


1-1103096865
Змей
2004-12-15 10:47
2004.12.26
DriveCombobox


3-1101880675
pkm
2004-12-01 08:57
2004.12.26
Dos and Window





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский