Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.03.18;
Скачать: [xml.tar.bz2];

Вниз

Изменить исходник дельфи   Найти похожие ветки 

 
sergeyst ©   (2007-02-22 08:48) [0]

Всем привет! У TGraphic, TMetaFile, TBitmap есть метод LoadFromStream(), у TPicture он почему-то защищенный. Можно ли сделать его public?
И как потом перекомпилировать библиотеки Delphi?
Необходимость возникла по следующей причине:
if FileExt = ".jpg" then image.picture.LoadFromStream(Stream)
else if FileExt = ".bmp" then Image.picture.BitMap.LoadFromStream(Stream)
else if FileExt = ".emf" then Image.Picture.Metafile.LoadFromStream(Stream);

Все вроде работало, пока не наткнулся на файл jpg, который таким образом не грузится, а вот если Image.Picture.LoadFromFile(FileName) - то да. Может файл какой не такой?


 
ЮЮ ©   (2007-02-22 09:21) [1]

а вот если Image.Picture.LoadFromFile(FileName)  то да.
Потому что в этом случае используются не куцые св-ва  Image.picture, как у тебя, а, в соответствии с расширением, создается полноценный наследник TGraphic, который отлично справляется с загрузкой себя что из файла, что из Stream-а.

Изменить исходник дельфи не надо, надо как-то догадаться что представляет собой подсунутый Stream и создать объект того типа, который из этого стрима загрузится.

Измени на .bmp расширение не bmp-шного файла и убедись, что Image.Picture.LoadFromFile здесь тоже сломается. Расширение лишь дает делать предварительное умозаключение о том, в каком формате там хранится изображение. Если же в файле окажется не то, что ожидали, то - увы :(


 
sergeyst ©   (2007-02-22 10:29) [2]


> надо как-то догадаться что представляет собой подсунутый
> Stream

Как?


 
ЮЮ ©   (2007-02-22 10:40) [3]

Погадать на кофейной гуще, например. :)
Как спрашивается, эта информация в Stream-е оказалась? Её же не абстрактный TGraphic положил, а конкретный представитель этого славно класса.


 
sergeyst ©   (2007-02-22 13:21) [4]

Stream := IBDataSet.CreateBlobStream(FieldByName("BlobField"), bmRead);
тип файла FieldByName("FileName").AsString;
> Измени на .bmp расширение не bmp-шного файла и убедись,
> что Image.Picture.LoadFromFile здесь тоже сломается.

Кажется, ты меня не правильно понял. Ломается LoadFromStream, причем только на одном файле(может и еще на каких - не проверял), а, вот, LoadFromFile нормально его загружает. Вопрос: как из потока выделить инфу о типе файла, нах-ся в нем(я, думаю, что должен быть какой-нибудь заголовок у файла)?


 
DrPass ©   (2007-02-22 13:51) [5]


> Вопрос: как из потока выделить инфу о типе файла, нах-ся
> в нем(я, думаю, что должен быть какой-нибудь заголовок у
> файла)?

Открой файлы bmp, wmf и jpeg в текстовом редакторе, и посмотри, чем они отличаются. То же самое находится и в стриме, больше ничего конкретного.

>  FileExt = ".jpg" then image.picture.LoadFromStream(Stream)

сделай сначала TJPEGImage.LoadFromStrean(Stream), а потом Image.Picture.Assign(TJPEGImage)


 
sergeyst ©   (2007-02-22 14:27) [6]

Спасибо.



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

Форум: "Начинающим";
Текущий архив: 2007.03.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.058 c
2-1172479664
Darvin
2007-02-26 11:47
2007.03.18
Ошибки при чтении данных из COM-порта


2-1172039794
User_OKA
2007-02-21 09:36
2007.03.18
Update


15-1172255894
mdaaaaaaa
2007-02-23 21:38
2007.03.18
Flash


15-1171057092
cadet
2007-02-10 00:38
2007.03.18
Linux


3-1166513746
pvm
2006-12-19 10:35
2007.03.18
BDE+DB2





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский