Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Расширения [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..

А почему нет?


Наверх

Титульная страница Поиск, карта сайта Написать письмо