Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Форум .::NoWa.cc::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Программирование > Delphi

Уважаемые пользователи nowa.cc. Мы работаем для вас более 20 лет и сейчас вынуждены просить о финансовой помощи по оплате за сервер.
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: 826074280762 Webmoney WME: 804621616710
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!
Ответ
 
Опции темы Опции просмотра Language
Старый 14.05.2008, 16:38   #1
Неактивный пользователь
 
Регистрация: 31.07.2007
Адрес: Воронеж
Сообщений: 5
Репутация: 0
По умолчанию TReader - при убиении загруженного компонента получаю AV

Доброе всем время суток.

Камрады, кто-нибудь сталкивался вот с таким:
На форме есть TChart, назовем его CH. Переписываем его через TReader.ReadRootComponent. При попытке убить CH получаем AV

Access violation at address 09472F8E in module 'osa_chart.dll'. Read of address 005D6000.

Соответственно, то же самое происходит при закрытии формы. Как бороться - непонятно

Упреждая некоторые вопросы.
1. Stream.ReadComponent не прокатывает, пробовал
2. Ежели не загружать CH из ридера, все нормально работает.
3. Owner загруженому чарту стаится правильный.
4. Загружается все ровно и правильно, как было сохранено - то и получаю.

Кусок кода, как загружается:

Код:
var St: TMemoryStream;
...
St.Seek(0,2); St.Seek(0,0);
R := TReader.Create(St, 4096);
FreeAndNil(CH); // пробовал и не убивать - те же косяки
CH := R.ReadRootComponent(nil) as TChart;
CH.Parent := Self;
InsertComponent(CH);
FreeAndNil(R);
Вот, примерно так.

Добавлено через 46 минут
Как говорилось в одном анекдоте - война окончена, наш концлагерь закрывается, спасибо за внимание

Вопрос решен так:

> var St: TMemoryStream;
C: TChart;
> ....
> St.Seek(0,2); St.Seek(0,0);
> R := TReader.Create(St, 4096);

Вот вместо вот этого

> CH := R.ReadRootComponent(nil) as TChart;
> CH.Parent := Self;
> InsertComponent(CH);

написал так:
C := R.ReadRootComponent(nil) as TChart;
CH.Assign( C );
FreeAndNil( C );

> FreeAndNil(R);

Помогло

Последний раз редактировалось YCHDel; 14.05.2008 в 17:24.. Причина: Добавлено сообщение
YCHDel вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама: Интегрируй приложения вместе с Альбато: боксберри отправка через яндекс маркет - синхронизация за 5 минут!мужские рыбные букеты3д печатьтеплоходы круизные по волге рейтинггерман греф


Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 16:11. Часовой пояс GMT +3.


Copyright ©2004 - 2025 NoWa.cc

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.12707 секунды с 13 запросами