Форум: "Основная";
Текущий архив: 2003.11.20;
Скачать: [xml.tar.bz2];
ВнизОсвобождение ресурсов Найти похожие ветки
← →
Ru (2003-11-10 11:16) [0]Пожалуй так. У меня возникла проблема, которую самостоятельно решить не могу. Я использую JvxRichEdit для вывода информации (среди текста могут попадаться графические объекты). Пока программа работает всё нормально и без проблем. При выходе из программы возникает ошибка (программа высвечивает исходник JvxRichEdit), что, как вы понимаете, не желательно.
Вопрос в следующем: Как побороть данную ошибку? Или как её обойти?
← →
Плохиш_ (2003-11-10 11:20) [1]Ну ошибка как всегда в известной строке.
← →
Ru (2003-11-10 11:39) [2]>Плохиш_ (10.11.03 11:20) [1]
вот пожалуйста:
procedure TJvCustomRichEdit.WMDestroy(var Msg: TWMDestroy);
begin
CloseObjects;
ReleaseObject(FRichEditOle);//здесь останавливается курсор
inherited;
end;
где:
procedure TJvCustomRichEdit.CloseObjects;
var
I: Integer;
ReObject: TReObject;
begin
if Assigned(FRichEditOle) then begin
FillChar(ReObject, SizeOf(ReObject), 0);
ReObject.cbStruct := SizeOf(ReObject);
with IRichEditOle(FRichEditOle) do begin
for I := GetObjectCount - 1 downto 0 do
if Succeeded(GetObject(I, ReObject, REO_GETOBJ_POLEOBJ)) then begin
if ReObject.dwFlags and REO_INPLACEACTIVE <> 0 then IRichEditOle(FRichEditOle).InPlaceDeactivate;
ReObject.poleobj.Close(OLECLOSE_NOSAVE);
ReleaseObject(ReObject.poleobj);
end;
end;
end;
end;
меня интересует как отучить программу выдавать ошибку и закрываться, когда её просят без вопросов и сообщений.
← →
BizonWar (2003-11-10 11:43) [3]Я, наверно, не понял.. Ты имеешь ввиду "высвечивает исходник" при запуске из Дэлфи? Подругому вроде не может...
← →
Ru (2003-11-10 11:46) [4]>BizonWar © (10.11.03 11:43) [3]
да "высвечивает исходник". А если быть точным, то сообщает об ошибке в выполнении процедуры.
← →
BizonWar (2003-11-10 11:48) [5]Ну, спрячь исходник, оставь один dcu. Не будет открывать.
← →
Ru (2003-11-10 11:50) [6]>BizonWar © (10.11.03 11:48) [5]
это не решение проблемы. В JvxRichEdit возникает ошибка связанная (на мой взгляд с освобождением ресурсов). Эта ошибка будет проявляться в ехе файле не зависимо от того компонентв в виде исходника или дку
← →
BizonWar (2003-11-10 11:56) [7]Ну, так это другой вопрос. Я все-таки, наверно, не догоняю. Ты спросил, как сделать, чтобы не высвечивался исходник.
А так в try except возьми. Не должно быть сообщений об ошибке. Но ошибка все равно останется. Иначе смотри сами исходники.
← →
Ru (2003-11-10 12:01) [8]>BizonWar © (10.11.03 11:56) [7]
меня интересует как обойти появление ошибки. Чтобы при закрытии программы она, таки, закрылась и ошибку юзеру не высвечивала.
← →
BizonWar (2003-11-10 12:05) [9]Вот смотри, накидал простой пример:
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c:Real;
begin
try
B:=10;
c:=0;
a:=b/c;
Edit1.Text:=FloatToStr(a);
except
end;
end;
Сообщения об ошибке нет. Хотя, сама ошибка есть. Т.е. при запуске из Дэлфи оно будет, но при запуске непосредственно экзешника - нет.
← →
Ru (2003-11-10 12:25) [10]ошибка проявляется при выходе из самого приложения
← →
Романов Р.В. (2003-11-10 12:34) [11]
> меня интересует как обойти появление ошибки
Чтобы не возникало сообщение об ошибке нужно устранить ошибку или перехватывать соощение об ошибке.
← →
Ru (2003-11-10 12:37) [12]>Романов Р.В. © (10.11.03 12:34) [11]
вынужден предположить, что ошибка возникает в исходниках библиотеки Jedi и устранить её я не могу (см. выше).
перехватить ошибки можно было бы, но она возникает в файле проекта при финальном end
← →
BizonWar (2003-11-10 12:39) [13]А Call Stack на момент ошибки пустой?
← →
Ru (2003-11-10 13:09) [14]>BizonWar © (10.11.03 12:39) [13]
выдает подобную строку:
TJvCustomRichEdit.WMDestroy(???);
← →
BizonWar (2003-11-10 13:44) [15]Ну, значит ошибка возникает в TJvCustomRichEdit.WMDestroy
Вот и посмотри в исходниках в чем может быть проблема.
← →
BizonWar (2003-11-10 13:45) [16]Поставь BreakPoint, посмотри аргумент. Это все не так сложно обычно бывает...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.11.20;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.01 c