Я не раз натыкался в этом некоторые из моих старых код и подумал, что я поделиться им с вами:
Code: |
function CreateVariantPtr(_Value: variant): pVariant; begin GetMem(Result, SizeOf(Variant)); Result^ := _Value; end; |
Кажется достаточно простым, не так лиt? Кто-нибудь, кто может обнаружить ошибку? Я получил ложных нарушения прав доступа в строке Результат^ := Чтения; ОК, причина: Память, выделенную с GetMem не инициализируется, поэтому "Вариант", указывает Результат содержит некоторые случайные данные, например, то, что может представлять типа variant, который требует некоторой доработки вариант, когда изменяется, предположим, что массив variant какой-то. Но это завершение не работает потому что контент-это просто случайный мусор, а иногда мне повезло (я это!) и есть нарушение прав доступа, что позволило мне заметить ошибку. Исправление:
Code: |
function CreateVariantPtr(_Value: variant): pVariant; begin GetMem(Result, SizeOf(Variant)); Initialize(Result^); Result^ := _Value; end; |
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!