![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Загрузка png из потока в gdiplus. [D7, WinXP]
S7r © (2007-11-24 18:49:00)Здравствуйте,
Собственно возникла следующая проблема: при загрузке 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 файл не из потока а напрямую из файла, то все также работает нормально.
S7r (2007-11-25 09:56:00) [1]Конструктор у TGPImage перегружен.
constructor TGPImage.Create(filename: WideString; useEmbeddedColorManagement: BOOL = FALSE);
constructor TGPImage.Create(stream: IStream; useEmbeddedColorManagement: BOOL = FALSE);
antonn (2007-11-25 00:33:00) [2]а Img:=TGPImage.Create(StreamAdapt); что требует? путь до файла или поток?
S7r (2007-11-24 23:46:00) [3]Установка:
StreamAdapt.Stream.Position:=0;
не помогла. Все тоже самое.
С MemStream.Position таже фигня.
antonn (2007-11-24 23:21:00) [4]после StreamAdapt:=TStreamAdapter.Create(MemStream, soOwned); попробывать
StreamAdapt.position:=0;
S7r (2007-11-24 23:09:00) [5]А вот у меня скомпилированный exe как раз и не работает. Пишет: Access violation at address 78208BAA in module 'gdiplus.dll'. Read of address 51EC8B91.
Если запустить в режиме отладки то вылетает окно с CPU и если продолжить выполнение, то все нормально нарисует. Причем в CPU он мне как я понял указывает на какой-то break point в ntdll. Такое чувство, что где-то переполнение и возврат идет не туда...
Efir (2007-11-24 20:36:00) [6]И что интересно, если запустить скомпиленный exe, то всё работает нормально.
Efir (2007-11-24 20:33:00) [7]Сталкивался тоже с такой же проблемой, задавал вопрос сдесь же, но так и не решил.