Я не раз натыкался в этом некоторые из моих старых код и подумал, что я  поделиться им с вами:

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;

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить