![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Расширения [D7, XP]
Steep © (2007-03-29 07:48:00)Как при открытии файла определить расширение?
т.е. воспользовавшись ExtractFileExt узнаем расширение, а потом пытаемся что-то сделать на определенное расширение (или группу расширени..)
(в плеере при открытии видио должна открываться форма видио, а если аудио, то чтоб и не появлялась
или чтобы производить какие-то действия в графической программе например рисовать)
а потом делать case format{string} of 'avi','wma' :begin и тд.
но делфик выдает ordinal type required
и несовместимость форматов integer и string
вот... а как быть? Неужели каждый раз писать if str='***' then...
begin...end (2007-03-29 12:55:00) [1]uses StrUtils;
if AnsiIndexText(Ext, ['avi', 'wma']) >= 0 then ...
Правильный Вася (2007-03-29 12:04:00) [2]
> Как-то неудобно...
неудобно штаны через голову одевать
Steep (2007-03-29 11:11:00) [3]
> если расширение файла будет заглавными буквами? Имхо, нужно
> приводить к Lower или Uppercase.
Ты прав! молодец ASoft !
ASoft (2007-03-29 09:16:00) [4]если расширение файла будет заглавными буквами? Имхо, нужно приводить к Lower или Uppercase.
Джо (2007-03-29 08:45:00) [5]Нет, хватит уже извращений, пожалуй :)
Steep (2007-03-29 08:38:00) [6]
> Показать на COM-интерфейсах? ;->
Давай! я хоть пасматрю.. ;)
Джо (2007-03-29 08:37:00) [7]> [8] Steep © (29.03.07 08:35)
> Джо © ты крут!! я б тах не смог ;)
Показать на COM-интерфейсах? ;->
Steep (2007-03-29 08:35:00) [8]Джо © ты крут!! я б тах не смог ;)
Джо (2007-03-29 08:31:00) [9]Продолжаем извращенческие фантазии :)
const
Audio: array [0..2] of string = ('.wav','.mp3','.ogg');
Video: array [0..2] of string = ('.avi','.wmv','.mts');
type
TFileProcessorProc = procedure (FileName: string);
function IsExtension (Ext: string; Exts: array of string): Boolean;
var
I: Integer;
begin
Result := False;
for I := Low(Exts) to High(Exts) do
if Ext = Exts[I] then
begin
Result := True;
Break
end
end;
function HandleVideo (FileName: string): Boolean;
begin
Result := IsExtension(ExtractFileExt(FileName),Video);
if Result then
begin
// обрабатываем файл
end;
end;
function HandleAudio (FileName: string): Boolean;
begin
Result := IsExtension(ExtractFileExt(FileName),Audio);
if Result then
begin
// обрабатываем файл
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
FileName: string;
begin
if not HandleVideo(FileName) then
if not HandleAudio(FileName) then
end;
Steep (2007-03-29 08:30:00) [10]хм.. чето не подумал насчет перебора (все на case тянет ;) )
Спасибо!!
Джо (2007-03-29 08:25:00) [11]
const
Audio: array [0..2] of string = ('wav','mp3','ogg');
Video: array [0..2] of string = ('avi','wmv','mts');
...
function IsExtension (Ext: string; Exts: array of string): Boolean;
var
I: Integer;
begin
Result := False;
for I := Low(Exts) to High(Exts) do
if Ext = Exts[I] then
begin
Result := True;
Break
end
end;
...
if IsExtension(Ext,Audio) then ... else
if IsExtension(Ext,Video) then ... else
...
Steep (2007-03-29 08:14:00) [12]
> array, SET из всевозможных форматов
Пасип, а как его потом сравнивать?
Steep (2007-03-29 08:13:00) [13]
> А почему нет?
Как-то неудобно...
ASoft (2007-03-29 07:51:00) [14]array, SET из всевозможных форматов
Elen (2007-03-29 07:50:00) [15]
> Неужели каждый раз писать if str='***' then..
А почему нет?