Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TGraphicClass по расширению, как получить? 
:(
    Опции темы
Illusion Dolphin
  Дата 7.12.2004, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 13
Всего: 63



Необходимо загрузить файл, который является по умолчанию графическим, но может и быть немного видоизменённым мною (зашифрован, например), который я сначала думаю азгрущать в поток, потом же его расшифровывать по мере необходимости, но возникла проблема загрузки из стрима в TGraphic.

В модуле graphics дано следующее определение загрузки с файла:

Код

procedure TPicture.LoadFromFile(const Filename: string);
var
 Ext: string;
 NewGraphic: TGraphic;
 GraphicClass: TGraphicClass;
begin
 Ext := ExtractFileExt(Filename);
 Delete(Ext, 1, 1);
 GraphicClass := FileFormats.FindExt(Ext); //нужно ЭТО
 if GraphicClass = nil then
   raise EInvalidGraphic.CreateFmt(SUnknownExtension, [Ext]);

 NewGraphic := GraphicClass.Create;
 try
   NewGraphic.OnProgress := Progress;
   NewGraphic.LoadFromFile(Filename);
 except
   NewGraphic.Free;
   raise;
 end;
 FGraphic.Free;
 FGraphic := NewGraphic;
 FGraphic.OnChange := Changed;
 Changed(Self);
end;

Пока всё упирается в FileFormats.FindExt(Ext) - FileFormats это внутрення переменная в модуле TGraphic, и обойти не получается. Помогите одним словом найти функцию типа GetGraphicClass(Ext : String) : TGraphicClass.


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
p0s0l
Дата 18.12.2004, 01:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 16
Всего: 112



Странно, что такой функции нет...

Как проблему решил ? (если решил...)


--------------------
С уважением, г-н Посол.
PM   Вверх
Illusion Dolphin
Дата 19.12.2004, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 13
Всего: 63



[/quote]
Как проблему решил ? (если решил...)
[quote]
Пришлось решать, но как получается иногда в таких случаях - совсем некрасиво. Долгие попытки что-нибудь гибкое сделать пришли к выводу, что раз в скомпилированой проге других форматов не будет (если не делать собственную систему плугинов, есна), то можно всё-таки сделать около 30 условий типа
if ext='psd' then result:=TPSDImage... Хотя можно было по сути взять, да и сделать модуль graphicsx.pas, в котором всё будет от обычного graphics, по FileFormats будет виден для других модулей. Может проблему можно было решить с помощью RTTI (по крайней мере в каждом объекте TPicture ести ссылка на FileFormats), но я не пробовал...


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0452 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.