Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.18;
Скачать: CL | DM;

Вниз

ТЕКСТ   Найти похожие ветки 

 
010101001010001010101001   (2004-03-31 14:40) [0]

Мне нужно решить вот такую задачу:
var
ext: string;
begin
ext := extractfileext(opendialog.filename)
if ext = ".bmp" then image.picture.loadfromfile(opendialog.filename);

Но разширение файла может быть написанно и .BMP И .bMp
Я вижу три решения задачи:
1. Переобразовать все большие буквы разширения на маленькие
2. Заставить мою программу "Забивать" на регистр.
3. Прописать все возможные разширения: ".bmp",".Bmp".".BMp"
Третий вариант меня не устариивает, а первые два я реализовать не могу. Уважаемые мастера, помогите пожалуйста мне с каким нибудь варианом!


 
Ega23 ©   (2004-03-31 14:43) [1]

if UpperCase(ext)="BMP" then ....

Но это цветочки. Вот если я mp3-файл в bmp переимную, то что будешь делать?  :о)


 
han_malign ©   (2004-03-31 14:43) [2]

(UpperCase(ext)=".BMP")

(AnsiCompareText(ext,".bmp")=0)


 
010101001010001010101001   (2004-03-31 14:44) [3]

Спасибо!


 
han_malign ©   (2004-03-31 14:46) [4]

до кучи :))
(LowerCase(ext)=".bmp")


 
010101001010001010101001   (2004-03-31 14:46) [5]

(AnsiCompareText(ext,".bmp")=0)
это куда вставлять?


 
han_malign ©   (2004-03-31 14:47) [6]

if(AnsiCompareText(ext,".bmp")=0)then ...

AnsiCompareText compares S1 to S2, without case sensitivity. The compare operation is controlled by the current locale. AnsiCompareText returns a value less than 0 if S1 < S2, a value greater than 0 if S1 > S2, and returns 0 if S1 = S2.


 
010101001010001010101001   (2004-03-31 14:50) [7]

Во всех ваших вариантах, что вы говорили проихдожит тоже что при
if ext = ".bmp" then
Тож если запустить файл ".BMP", то ничего не произойдет!!!


 
Ega23 ©   (2004-03-31 14:53) [8]

Тебе надо не по расширению проверять, а по первым 3-м байтам, что-то типа
function GetGraphicFormat(const FileName:String):TGraphicFormat;
var
Buffer: array[0..2] of Byte;
fs:TFileStream;
begin
Result:=gfUnknown;
try
  fs:=TFileStream.Create(FileName,fmOpenRead);
  fs.ReadBuffer(Buffer, 3);
  if (Buffer[0] = $49) and (Buffer[1] = $49) and (Buffer[2] = $2A) then Result:=gfTIFF;
  if (Buffer[0] = $42) and (Buffer[1] = $4D) then Result:=gfBMP;
  if (Buffer[0] = $FF) and (Buffer[1] = $D8) then Result:=gfJPEG;
  if (Buffer[0] = $47) and (Buffer[1] = $49) and (Buffer[2] = $46) then Result:=gfGIF;
finally
  fs.Free;
end;
end;


 
010101001010001010101001   (2004-03-31 15:02) [9]

не... не то, нужно именно по разширениям!
Так почему у меня не работатют примеры?


 
Ega23 ©   (2004-03-31 15:05) [10]

точку убери


 
010101001010001010101001   (2004-03-31 15:06) [11]

ок


 
Romkin ©   (2004-03-31 15:07) [12]

> 54A2A9H

if ansiCompareText(ext,  ".bmp") = 0 then    
 image.picture.loadfromfile(opendialog.filename);

Не пробовал?


 
010101001010001010101001   (2004-03-31 15:08) [13]

ВСЕ РАВНО НЕ РАБОТЕАТ!!!


 
010101001010001010101001   (2004-03-31 15:12) [14]

Все, разобрался! РАБОТАЕТ!


 
Digitman ©   (2004-03-31 15:26) [15]

"з" убери из слова "раЗширение"



Страницы: 1 вся ветка

Текущий архив: 2004.04.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
9-1066393003
Timer
2003-10-17 16:16
2004.04.18
Анимированный спрайт


9-1066032251
Gad
2003-10-13 12:04
2004.04.18
Проблема с dll и форматом JPEG... помогите пожалуйста....


14-1079822182
Knight
2004-03-21 01:36
2004.04.18
Что за знак?


4-1076302452
r9000
2004-02-09 07:54
2004.04.18
Управление другой программой


4-1076139499
}{enon
2004-02-07 10:38
2004.04.18
Как найти обновляемый регон?