![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Помогите!!! Если я закрываю программу, не открывая во время работы с ней файл справки (CHM-файл), то все бывает нормально. Если во время работы с программой я читаю справку, то при закрытии программы создается исключение типа EInvalidPointer: сообщение Invalid Pointer Operation. В чем может быть дело?
![]() |
#2
|
||||
|
||||
![]() Цитата:
Код:
try //действия при закрытии except on EInvalidPointer do //твои действия end; |
#3
|
|||
|
|||
![]() В событии закрытия код не используется.
Вот код процедуры открытия справки: Код:
procedure TForm1.N9Click(Sender: TObject); var HelpFile : string; HelpTopic : string; pwHelpFile : PWideChar; pwHelpTopic : PWideChar; begin HelpFile := 'game_15_help.chm'; HelpTopic := 'what_is_it.htm'; GetMem(pwHelpFile, Length(HelpFile) * 2); GetMem(pwHelpTopic, Length(HelpTopic) * 2); pwHelpFile := StringToWideChar(HelpFile, pwHelpFile, MAX_PATH * 2); pwHelpTopic := StringToWideChar(HelpTopic, pwHelpTopic, 32); Form1.Hhopen1.OpenHelp(pwHelpFile, pwHelpTopic); end; И вообще, в каких ситуациях возникает это исключение? Последний раз редактировалось Admin, 10.09.2008 в 20:29. |
#4
|
|||
|
|||
![]() Не уверен точно, но ИМХО если ты взял память, то ее небоходимо освободить
|
#5
|
|||
|
|||
![]() Тогда не подскажите, как освободить взятую память:
Цитата:
из примера выше? Последний раз редактировалось Z@voorchik, 08.09.2008 в 16:46. |
#6
|
||||
|
||||
![]() Цитата:
|
#7
|
|||
|
|||
![]() Не Dispose, а FreeMem.
А вообще, там вполне пройдет PChar, соответсвенно вызоа можно делать так: Код:
Form1.Hhopen1.OpenHelp(PChar(HelpFile), PChar(HelpTopic)); |
#8
|
|||
|
|||
![]() Большое спасибо!!! Работает!!!
|