![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
формат файла. [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()