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

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

Условие на расширение открываемого файла [D7, WinXP]


Egoor ©   (2010-07-05 15:31:00) 

Здравствуйте. Я делаю просмоторщик текстовых фалов и картинок. Задаю условие:

with OpenDialog1 do

if Execute then
begin
if  OpenDialog1.FileName='*.jpg' then
ShowMessage('Картинка');

 end

Но ничего не работает. ShowMessage - это для примера. При открытии OpenDialog ставиться одно возможное расширение открываемого файла - .jpg. Как исправить? Надо, еасли это текст открыть, а если картинка показать ShowMessage


Dennis I. Komarov   (2010-07-06 15:31:00) [1]


> Deltas ©   (06.07.10 15:23) [15]

С чего бы?


Deltas   (2010-07-06 15:23:00) [2]

То, что в данном случае, внутренний формат файла не важен. Проверка только по расширению.


Dennis I. Komarov   (2010-07-06 15:08:00) [3]


> Deltas ©   (06.07.10 14:50) [13]

Посмотрел, и что?


Deltas   (2010-07-06 14:50:00) [4]


> Dennis I. Komarov ©   (06.07.10 13:58) [11]

А теперь посмотрите на название ветки: "Условие на расширение открываемого файла".
Разумеется, расширение не гарантирует, что файл содержит данные в соответствующем формате.


Демо   (2010-07-06 14:10:00) [5]


> Egoor   (05.07.10 15:31


Используй функцию проверки по маске - MatchesMask


Dennis I. Komarov   (2010-07-06 13:58:00) [6]


> С чего Вы взяли? Ведь перед этим могло быть
> ren music.mp3 picture.jpg

Да потому что это мой picture.jpg. Что захочу, то туда и нарисую...
Сей пост лишь показывает, что расширение файла никак не отвечает 100% за свое содержание...

> Кстати, скажу по секрету, картинок вообще не сущесвует,
> существуют только последовательности байт, организованные
> в виде файла. А картинка это или не картинка - все зависит
> от того, как эту последовательность байт обрабатывать.

Под картинками подразумевается последовательность байт в определенном, общепринятом, документированном формате(ах)... Зачем нам этот секрет?


Deltas   (2010-07-06 13:37:00) [7]


> Dennis I. Komarov ©   (06.07.10 12:39) [9]
> ren picture.jpg document.doc
> И все же это картинка...

С чего Вы взяли? Ведь перед этим могло быть
ren music.mp3 picture.jpg
Какая же это картинка?
Кстати, скажу по секрету, картинок вообще не сущесвует, существуют только последовательности байт, организованные в виде файла. А картинка это или не картинка - все зависит от того, как эту последовательность байт обрабатывать.


Dennis I. Komarov   (2010-07-06 12:39:00) [8]

ren picture.jpg document.doc
И все же это картинка...


antonn   (2010-07-06 12:13:00) [9]


> > if  pos('.jpg',OpenDialog1.FileName) <> 0 then
> > ShowMessage('Возможно картинка');

if  pos('['+ansilowercase(extractfileext(OpenDialog1.FileName))+']','[.jpg][.bmp][.png]') <> 0 then

=)


Anatoly Podgoretsky   (2010-07-06 12:05:00) [10]

> Deltas  (06.07.2010 11:41:06)  [6]

Ну если упрощать то до предела

ShowMessage('Возможно картинка');


Deltas   (2010-07-06 11:41:00) [11]


> 12 ©   (06.07.10 08:33) [5]
> > ShowMessage(' Возможнокартинка');

Тогда, предлагаю упростить алгоритм :)
If Execute then
 ShowMessage('Возможно картинка');


12   (2010-07-06 08:33:00) [12]


> ShowMessage(' Возможнокартинка');


Deltas   (2010-07-05 19:12:00) [13]


> 12 ©   (05.07.10 15:43) [2]
> > if Execute then
> > begin
> > if  pos('.jpg',OpenDialog1.FileName) <> 0 then
> > ShowMessage('Возможно картинка');

А если OpenDialog1.FileName = Некартинка.jpg.txt?


12   (2010-07-05 15:45:00) [14]

> При открытии OpenDialog ставиться одно возможное расширение
> открываемого файла

 OpenDialog1.Filter := '*.txt; *.bmp';
 if openDialog1.Execute


{RASkov}   (2010-07-05 15:43:00) [15]

> [0] Egoor   (05.07.10 15:31)
> if  OpenDialog1.FileName='*.jpg' then

Условие не сработает, потому как файла с таким именем не будет.
Тут звездочка и вопрос не работают... Есть отдельные методы(модули) например masks...
но можно и такой вариант:
if Execute then
begin
if AnsiLowerCase(ExtractFileExt(FileName))='.jpg' then
ShowMessage('Файл с расширением jpg');


12   (2010-07-05 15:43:00) [16]

> if Execute then
> begin
> if  pos('.jpg',OpenDialog1.FileName) <> 0 then
> ShowMessage('Возможно картинка');


Наверх

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