Форум: "Основная";
Текущий архив: 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.035 c