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

Вниз

Загрузка png из потока в gdiplus.   Найти похожие ветки 

 
S7r ©   (2007-11-24 18:49) [0]

Здравствуйте,
Собственно возникла следующая проблема: при загрузке png файла из потока в gdiplus вываливается access violation. Код следующий:

   OpenDialog1.Execute;
   MemStream:=TMemoryStream.Create;
   MemStream.LoadFromFile(OpenDialog1.FileName);
   StreamAdapt:=TStreamAdapter.Create(MemStream, soOwned);
   Img:=TGPImage.Create(StreamAdapt);//вот здесь access violation
   //Img:=TGPImage.Create(OpenDialog1.FileName);//так все нормально
   gdiGraphics:=TGPGraphics.Create(Form1.Canvas.Handle);
   gdiGraphics.DrawImage(Img, 0, 0, Form1.Width, Form1.Height);


Странно еще то, что все стабильно работает если загружать файлы других поддерживаемых форматов или если загружать png файл не из потока а напрямую из файла, то все также работает нормально.


 
Efir   (2007-11-24 20:33) [1]

Сталкивался тоже с такой же проблемой, задавал вопрос сдесь же, но так и не решил.


 
Efir   (2007-11-24 20:36) [2]

И что интересно, если запустить скомпиленный exe, то всё работает нормально.


 
S7r ©   (2007-11-24 23:09) [3]

А вот у меня скомпилированный exe как раз и не работает. Пишет: Access violation at address 78208BAA in module "gdiplus.dll". Read of address 51EC8B91.
Если запустить в режиме отладки то вылетает окно с CPU и если продолжить выполнение, то все нормально нарисует. Причем в CPU он мне как я понял указывает на какой-то break point в ntdll. Такое чувство, что где-то переполнение и возврат идет не туда...


 
antonn ©   (2007-11-24 23:21) [4]

после StreamAdapt:=TStreamAdapter.Create(MemStream, soOwned); попробывать
StreamAdapt.position:=0;


 
S7r ©   (2007-11-24 23:46) [5]

Установка:
StreamAdapt.Stream.Position:=0;
не помогла. Все тоже самое.
С MemStream.Position таже фигня.


 
antonn ©   (2007-11-25 00:33) [6]

а Img:=TGPImage.Create(StreamAdapt); что требует? путь до файла или поток?


 
S7r ©   (2007-11-25 09:56) [7]

Конструктор у TGPImage перегружен.

 constructor TGPImage.Create(filename: WideString; useEmbeddedColorManagement: BOOL = FALSE);

 constructor TGPImage.Create(stream: IStream; useEmbeddedColorManagement: BOOL  = FALSE);



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

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

Наверх




Память: 0.48 MB
Время: 0.012 c
2-1243871211
Максим
2009-06-01 19:46
2009.07.26
TPopUpMenu + WM_COMMAND


15-1243085277
@!!ex
2009-05-23 17:27
2009.07.26
Не работает Shared Section.


11-1197097138
zNk
2007-12-08 09:58
2009.07.26
LZMA в MCK


15-1242854996
Германн
2009-05-21 01:29
2009.07.26
Поздравляю Шахтёр!


2-1243581599
И. Павел
2009-05-29 11:19
2009.07.26
Разное поведение программы при выполнении и отладке