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

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

формат файла. [D6, Win95/98, WinME, NT4, Win2k, WinXP]


Sergey V. Shadrin ©   (2002-10-10 12:10:00) 

на входе есть имя файла.
на выходе надо получить его формат. возможны jpg, bmp, gif..


Rouse_   (2002-10-19 00:36:00) [1]


> k (19.10.02 00:30)

Не обязательно первые 2 байта, но совет верен, только анализируя сигнатуру сможешь узнать истинный формат файла

Желаю успехов


k   (2002-10-19 00:30:00) [2]

столько шума.....

хех
сигнатура - первые 2 байта файла
так у бмп первые 2 байта - всегда BM, это стандарт....

для остальных - посмотри сам при помощи WinCommander"а




Anatoly Podgoretsky   (2002-10-18 10:40:00) [3]

Ru © (17.10.02 12:18)
Помоему он более чем ясно выразился.

Sergey V. Shadrin (18.10.02 10:33)
Тебе написали анилизируй заговки файла на определенные сигнатуры, как правило это в первых байтах файла.


Sergey V. Shadrin   (2002-10-18 10:33:00) [4]

я тупой. :) просто есть файл у него расширение gif а на самом деле - это jpeg. просто сменили расширение


Ru   (2002-10-17 12:18:00) [5]

>Sergey V. Shadrin (17.10.02 11:01)

??? или я тупой или вы не совсем понятно выразились


Sergey V. Shadrin   (2002-10-17 11:01:00) [6]

э, блин. есть у меня файл. имя его на ходе дается. оно может иметь вид 1.gif. а структура у него от jpeg. кроме как анализировать код ничего не придумал.


Ru   (2002-10-17 10:44:00) [7]

А чего это зачинщик молчит пролил бы нам свет на суть проблемы


Pumpkin   (2002-10-11 15:26:00) [8]

> что ты скажешь на это:
> ts:=copy(name,length(name)-4,4);
> if ts[1]="." then delete(ts,1,1);
А если "file.jpeg" догда ts:=copy(name,length(name)-5,5);? Ж:)))
Если уж тебе так не нравится ExtractFileExt тогда так:

i := Length(name);
while i > 0 and (name[i] <> ".") then Dec(i);
if i > 0 then ts := copy(name,i+1,MAXINT);



Ru   (2002-10-11 15:14:00) [9]

>Pumpkin
Если ты про copy(name,t,length(name)) то один хрен, можно и copy(name,t,MAXINT)
это было Ru © (10.10.02 15:29) и до меня эта ошибка дошла несколько ранее, а насчет: Я тебе про файлы типа "file.01.jpg"
что ты скажешь на это:

ts:=copy(name,length(name)-4,4);
if ts[1]="." then delete(ts,1,1);

>still

я исхожу из условия, что на входе строка, ведь до сих пор зачинатель этой ветки не сказал обратного :)


still   (2002-10-11 13:23:00) [10]

Если нужно только расширение файла, то

> ExtractFileExt

а если реальный формат - то нужно сам файл ковырять и сигнатуру смотреть


Pumpkin   (2002-10-11 13:19:00) [11]

2Ru
> смотри Ru © (10.10.02 15:55)
Если ты про copy(name,t,length(name))то один хрен, можно и copy(name,t,MAXINT)
Я тебе про файлы типа "file.01.jpg"


Ru   (2002-10-11 13:05:00) [12]

>MJH
работать голова должна, а не код!

>Pumpkin смотри Ru © (10.10.02 15:55)


Pumpkin   (2002-10-11 11:28:00) [13]

2Ru
> t:=pos(".",name);
> ts:=copy(name,t,length(name));
ExtractFileExt;


MJH   (2002-10-11 01:16:00) [14]

ну дык он так и сделает :))))
а потом будет на тебя кричать что твой код не работает :)


Ru   (2002-10-10 17:51:00) [15]

>MJH
Это пример, а он пусть сам решает какое у него расширение или задает следующий вопрос!


MJH   (2002-10-10 16:14:00) [16]

2Ru
>ts:=copy(name,t,3);
а про расширение ".jpeg" ты слышал?


Ru   (2002-10-10 15:55:00) [17]

ПАРДОН
во-первых:
ts:=copy(name,t,3);

во-вторых:
>Pumpkin
это конечно логично, но тогда пусть Sergey V. Shadrin укажет как он получает свое имя файла. Если читает сам файл, то без вопросов, а если нет?


Pumpkin   (2002-10-10 15:35:00) [18]

2Ru ExtractFileExt
Читай заголовок файла (как ACDSee) а то мало ли какое расширение(jpeg, jpg, jpe, jfif, jif; bmp, dib, rle или еще чего).


Ru   (2002-10-10 15:29:00) [19]

Получение информации о файле сработает если на входе файл.
Если просто строка, то может поможет следующее:
t:=pos(".",name);
ts:=copy(name,t,length(name));


Song   (2002-10-10 12:46:00) [20]

ShGetFileInfo()


Наверх

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