|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.11.2010, 13:32 | #1 |
Регистрация: 20.11.2010
Сообщений: 7
|
Работа с файлами
Ребят, подскажите команды, а лучше где порыться, чтобы запросить у файла дату создания файла, дату изменения файла, объем файла, качество ави файла, качество мп3 файла, длительность ави/мп3 ну и т.д.
|
20.11.2010, 16:09 | #2 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Цитата:
I'm learning to live...
|
||
25.11.2010, 00:07 | #3 |
Регистрация: 20.11.2010
Сообщений: 7
|
АВИ и МП3 реализовал через другие функции и доп модуль.
Ребят как определить Hendle файла. Я что-то читал-читал и ничего особо не понял. Помогите плиз. Объясните или напишите функцию получения Хендла |
25.11.2010, 09:09 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
А зачем тебе хендл? Он же непостоянный.
Впрочем CreateFile (который заменил OpenFile) дает хендл. Кстати fopen по-моему тоже как раз в FILE выдает хендл...
I'm learning to live...
|
25.11.2010, 09:48 | #5 |
Форумчанин
Регистрация: 17.02.2010
Сообщений: 399
|
дата файла
Код:
Код:
|
25.11.2010, 16:05 | #6 |
Регистрация: 20.11.2010
Сообщений: 7
|
Спасиб. сейчас попробую.
GetFileTime выдает даты созд, изм, доступа. Для этого ей надо передать хендл Снова та же самая ошибка. Эта процедура возвращает дату последнего изменения. Никак не могу сообразить как работает OpenFile. У меня такая ситуация. в переменную сохраняется путь к фалу взятый из файллистбокс. Мне надо об этом файле сделать описание характеристик. единственное что осталось это достать хендл файла. Можете прислать примера работы с функцие опенфайл?? Последний раз редактировалось minasgull; 25.11.2010 в 16:49. |
26.11.2010, 06:28 | #7 |
Форумчанин
Регистрация: 17.09.2009
Сообщений: 294
|
вот тебе пример для определения даты создания файла:
Код:
принимаю благодарности в письменном виде( весы слева)...
|
29.11.2010, 00:56 | #8 |
Регистрация: 20.11.2010
Сообщений: 7
|
Спасиб всем кто отозвался.
примеры выложу для таких же как я инфо МП3 (К сожалению кроме этого ничего не нашел) type TID3Tag = record ID: string[3]; Titel: string[30]; Artist: string[30]; Album: string[30]; Year: string[4]; Comment: string[30]; Genre: Byte; end; var Form1: TForm1; Genres : array[0..146] of string = ('Blues','Classic Rock','Country','Dance','Disco','Fu nk','Grunge', 'Hip- Hop','Jazz','Metal','New Age','Oldies','Other','Pop','R&B', 'Rap','Reggae','Rock','Techno','Ind ustrial','Alternative','Ska', 'Death Metal','Pranks','Soundtrack','Euro-Techno','Ambient', 'Trip-Hop','Vocal','Jazz+Funk','Fusion',' Trance','Classical', 'Instrumental','Acid','House','Game ','Sound Clip','Gospel','Noise', 'Alternative Rock','Bass','NOP','Punk','Space',' Meditative','Instrumental Pop', 'Instrumental Rock','Ethnic','Gothic','Darkwave', 'Techno-Industrial','Electronic', 'Pop-Folk','Eurodance','Dream','Southern Rock','Comedy','Cult','Gangsta', 'Top 40','Christian Rap','Pop/Funk','Jungle','Native US','Cabaret','New Wave', 'Psychadelic','Rave','Showtunes','T railer','Lo-Fi','Tribal','Acid Punk', 'Acid Jazz','Polka','Retro','Musical','Ro ck & Roll','Hard Rock','Folk', 'Folk-Rock','National Folk','Swing','Fast Fusion','Bebob','Latin','Revival', 'Celtic','Bluegrass','Avantgarde',' Gothic Rock','Progressive Rock', 'Psychedelic Rock','Symphonic Rock','Slow Rock','Big Band','Chorus', 'Easy Listening','Acoustic','Humour','Spe ech','Chanson','Opera', 'Chamber Music','Sonata','Symphony','Booty Bass','Primus','Porn Groove', 'Satire','Slow Jam','Club','Tango','Samba','Folklo re','Ballad', 'Power Ballad','Rhytmic Soul','Freestyle','Duet','Punk Rock','Drum Solo', 'Acapella','Euro-House','Dance Hall','Goa','Drum & Bass','Club-House', 'Hardcore','Terror','Indie','BritPo p','Negerpunk','Polsk Punk','Beat', 'Christian Gangsta','Heavy Metal','Black Metal','Crossover','Contemporary C', 'Christian Rock','Merengue','Salsa','Thrash Metal','Anime','JPop','SynthPop'); function readID3Tag(FileName: string): TID3Tag; var FS: TFileStream; Buffer: array [1..128] of Char; begin FS := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite); try FS.Seek(-128, soFromEnd); FS.Read(Buffer, 128); with Result do begin ID := Copy(Buffer, 1, 3); Titel := Copy(Buffer, 4, 30); Artist := Copy(Buffer, 34, 30); Album := Copy(Buffer, 64, 30); Year := Copy(Buffer, 94, 4); Comment := Copy(Buffer, 98, 30); Genre := Ord(Buffer[128]); end; finally FS.Free; end; end; procedure TfrmMain.Button1Click(Sender: TObject); begin if OpenDialog1.Execute then begin with readID3Tag(OpenDialog1.FileName) do begin LlbID.Caption := 'ID: ' + ID; LlbTitel.Caption := 'Titel: ' + Titel; LlbArtist.Caption := 'Artist: ' + Artist; LlbAlbum.Caption := 'Album: ' + Album; LlbYear.Caption := 'Year: ' + Year; LlbComment.Caption := 'Comment: ' + Comment; if (Genre >= 0) and (Genre <=146) then LlbGenre.Caption := 'Genre: ' + Genres[Genre] else LlbGenre.Caption := 'N/A'; end; end; end; |
29.11.2010, 00:56 | #9 |
Регистрация: 20.11.2010
Сообщений: 7
|
Получение Дат создания(CTS), изменения(LWTS), доступа(LATS)
var FileHandle: THandle; LocalFileTime: TFileTime; DosFileTime: DWORD; LAT,CT,LWT: TDateTime; FindData: TWin32FindData; LATS,CTS,LWTS:string; begin FileHandle := FindFirstFile(pchar(тут путь к файлу. строковое значение), FindData); if FileHandle <> INVALID_HANDLE_VALUE then begin Windows.FindClose(Handle); if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then begin FileTimeToLocalFileTime(FindData.ft CreationTime, LocalFileTime); FileTimeToDosDateTime(LocalFileTime , LongRec(DosFileTime).Hi, LongRec(DosFileTime).Lo); CT := FileDateToDateTime(DosFileTime); CTS:= DateTimeToStr(CT); FileTimeToLocalFileTime(FindData.ft LastWriteTime, LocalFileTime); FileTimeToDosDateTime(LocalFileTime , LongRec(DosFileTime).Hi, LongRec(DosFileTime).Lo); LWT := FileDateToDateTime(DosFileTime); LWTS:= DateTimeToStr(LWT); FileTimeToLocalFileTime(FindData.ft LastAccessTime, LocalFileTime); FileTimeToDosDateTime(LocalFileTime , LongRec(DosFileTime).Hi, LongRec(DosFileTime).Lo); LAT := FileDateToDateTime(DosFileTime); LATS:=DateTimeToStr(LAT); Информацию собирал по всему инету. Может кому пригодится. |
29.11.2010, 00:59 | #10 |
Регистрация: 20.11.2010
Сообщений: 7
|
Инфо АВИ (тут надо дописывать модуль)
Модуль unit AviInformation; interface uses SysUtils; type TAVIFileInfo = packed record AVIFileName: string; FileSize: double; ClipLength: double; VideoCodec: string[32]; ClipBitrate: double; ClipWidth: Integer; ClipHeight: Integer; ClipFPS: double; AudioCodec: string[32]; AudioBitRate: Integer; AudioSampleRate: Integer; AudioChannelCnt: Byte; end; function ReadAviInfo(FileName: string; var ErrCode: Byte): TAVIFileInfo; implementation function ReadAviInfo(FileName: string; var ErrCode: Byte): TAVIFileInfo; var iFileHandle: Integer; Aviheadersize: integer; Vheadersize: integer; Aviheaderstart: integer; Vheaderstart: integer; Aheaderstart: integer; Astrhsize: integer; TempFExt: string[5]; TempSize: Integer; TempVcodec: string[5]; TempAcodec: integer; TempMicrosec: integer; TempLengthInFrames: integer; TempAchannels: integer; TempAsamplerate: integer; TempAbitrate: integer; Size: double; Length: double; Vcodec: string; Vbitrate: double; VWidth: integer; VHeight: integer; Fps: double; LengthInSec: double; Acodec: string; Abitrate: Integer; RetVal: TAVIFileInfo; begin ErrCode := 0; TempAcodec := 0; TempAbitrate := 0; TempAsamplerate := 0; TempAchannels := 0; if not FileExists(FileName) then begin ErrCode := 1; exit; end; iFileHandle := FileOpen(FileName, fmOpenRead); FileSeek(iFileHandle, 7, 0); FileRead(iFileHandle, TempFExt, 5); if copy(TempFExt, 0, 4) <> 'AVI ' then begin ErrCode := 2; exit; end; FileSeek(iFileHandle, 4, 0); FileRead(iFileHandle, TempSize, 4); FileSeek(iFileHandle, 28, 0); FileRead(iFileHandle, Aviheadersize, 4); Aviheaderstart := 32; FileSeek(iFileHandle, Aviheaderstart, 0); FileRead(iFileHandle, TempMicrosec, 4); FileSeek(iFileHandle, Aviheaderstart + 16, 0); FileRead(iFileHandle, TempLengthInFrames, 4); FileSeek(iFileHandle, Aviheaderstart + 32, 0); FileRead(iFileHandle, VWidth, 4); FileSeek(iFileHandle, Aviheaderstart + 36, 0); FileRead(iFileHandle, VHeight, 4); FileSeek(iFileHandle, Aviheaderstart + Aviheadersize + 4, 0); FileRead(iFileHandle, Vheadersize, 4); Vheaderstart := Aviheaderstart + Aviheadersize + 20; FileSeek(iFileHandle, Vheaderstart + 3, 0); FileRead(iFileHandle, TempVCodec, 5); Aheaderstart := Vheaderstart + Vheadersize + 8; FileSeek(iFileHandle, Aheaderstart - 4, 0); FileRead(iFileHandle, Astrhsize, 5); FileSeek(iFileHandle, Aheaderstart + Astrhsize + 8, 0); FileRead(iFileHandle, TempACodec, 2); FileSeek(iFileHandle, Aheaderstart + Astrhsize + 10, 0); FileRead(iFileHandle, TempAchannels, 2); FileSeek(iFileHandle, Aheaderstart + Astrhsize + 12, 0); FileRead(iFileHandle, TempAsamplerate, 4); FileSeek(iFileHandle, Aheaderstart + Astrhsize + 16, 0); FileRead(iFileHandle, TempAbitrate, 4); FileClose(iFileHandle); Vcodec := copy(TempVcodec, 0, 4); if Vcodec = 'div2' then Vcodec := 'MS MPEG4 v2' else if Vcodec = 'DIV2' then Vcodec := 'MS MPEG4 v2' else if Vcodec = 'div3' then Vcodec := 'DivX;-) MPEG4 v3' else if Vcodec = 'DIV3' then Vcodec := 'DivX;-) MPEG4 v3' else if Vcodec = 'div4' then Vcodec := 'DivX;-) MPEG4 v4' else if Vcodec = 'DIV4' then Vcodec := 'DivX;-) MPEG4 v4' else if Vcodec = 'div5' then Vcodec := 'DivX;-) MPEG4 v5' else if Vcodec = 'DIV5' then Vcodec := 'DivX;-) MPEG4 v5' else if Vcodec = 'divx' then Vcodec := 'DivX 4' else if Vcodec = 'mp43' then Vcodec := 'Microcrap MPEG4 v3'; case TempAcodec of 0: Acodec := 'PCM'; 1: Acodec := 'PCM'; 85: Acodec := 'MPEG Layer 3'; 353: Acodec := 'DivX;-) Audio'; 8192: Acodec := 'AC3-Digital'; else Acodec := 'Unknown (' + IntToStr(TempAcodec) + ')'; end; case (Trunc(TempAbitrate / 1024 * 8)) of 246..260: Abitrate := 128; 216..228: Abitrate := 128; 187..196: Abitrate := 128; 156..164: Abitrate := 128; 124..132: Abitrate := 128; 108..116: Abitrate := 128; 92..100: Abitrate := 128; 60..68: Abitrate := 128; else Abitrate := Round(TempAbitrate / 1024 * 8); end; Size := TempSize / 1024 / 1024; Fps := 1000000 / TempMicrosec; // FPS LengthInSec := TempLengthInFrames / fps; Length := LengthInSec / 60; Vbitrate := (TempSize / LengthInSec - TempABitrate) / 1024 * 8; RetVal.AVIFileName := FileName; RetVal.FileSize := Size; RetVal.ClipLength := Length; RetVal.VideoCodec := VCodec; RetVal.ClipBitrate := Vbitrate; RetVal.ClipWidth := VWidth; RetVal.ClipHeight := VHeight; RetVal.ClipFPS := FPS; RetVal.AudioCodec := Acodec; RetVal.AudioBitRate := Abitrate; RetVal.AudioSampleRate := TempAsamplerate; RetVal.AudioChannelCnt := TempAchannels; ReadAviInfo := RetVal; end; end. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с файлами. | Pascaler | Помощь студентам | 6 | 13.05.2010 10:23 |
работа с файлами | Serjuk | Общие вопросы C/C++ | 2 | 06.05.2010 19:25 |
работа с файлами | 4thWing | Общие вопросы C/C++ | 5 | 12.04.2010 01:04 |