Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2010, 05:46   #1
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию Проверить действительность указателя

Всем привет!
Ситуация следующая.

Вот в функцию передаётся указатель на какую-нить структуру
Код:
type
  pMyRecord = ^tMyRecord;
  tMyRecord = packed record
   intValue: dword;
   strValue: pChar;
  end;
...

function someFunction(const pRecord: pMyRecord): boolean;
var
recSize: byte;
begin
   recSize := sizeOf(tMyRecord);   
end;
Как проверить, является ли блок памяти размером в recSize по указателю pRecord зарегистрированным? Т.е. обращения по нему не вызовет AV. А то проверять указатель только на Nil, это даже не половина случаев. Должна же быть какие-то функции для работы с планировщиком
Altera вне форума Ответить с цитированием
Старый 19.01.2010, 11:11   #2
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

Интернет пестрит подобными вопросами и везде ответ один и тот же - проверяй указатель на nil, а все остальное - от лукавого. В Windows есть функции, которые вроде бы должны обеспечивать проверку указателей (это IsBadReadPtr и IsBadWritePtr), но в самой документации к ним написано, что использовать их не стоит, т.к. они не гарантируют правильность проверки. А вообще, я считаю, что плохие указатели, это проблема вызывающей стороны, а не обрабатывающей. Достаточно проверить на nil, а если нужно обработвать остальные варианты, то можно использовать обработку исключений.
maxionans вне форума Ответить с цитированием
Старый 19.01.2010, 12:41   #3
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Ладно. Я уже принёл меры, всё проблемное заключил в Try...except
Altera вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение вида указателя VistaSV30 Microsoft Office Access 1 08.01.2010 11:30
Наличие указателя в объекте Edit El Fierro Общие вопросы Delphi 14 15.03.2009 13:47
передача указателя в функцию arturka Помощь студентам 3 06.07.2008 00:25
Координаты указателя мыши Артэс Win Api 9 15.06.2008 16:20
Положение указателя мыши Viteef Общие вопросы Delphi 4 26.06.2007 15:59