И так приложение с убраными компонентами и этой дрянью работает, как тока ставлю просто ваши компоненты, не обращаясь в них всё ругается на аксес виалэйшен, а причина очень проста вряде случаев портит память, в многопоточном приложении !!!!!!!
Вопрос и как быть да ответ прост, нафиг послать его все выходные просидел в трейсере наблюдая за ним ...это же надо чтобы так было :
Код: Выделить всё
TFS_Politica *pol=FUsers->PoliticaByID(Item->Attributes->ByName["ID"]->Value);
разбираю по шагам все функции в одном класе находятся
при вызове функции PoliticaByID("ALL") (Выбор значения нормально прошол)
this= .... чему то там но нормальному адресу
Приходим в функцию
и обоже this=0x0000005
ВАУ, это как ?????
а казалось что просто :
Код: Выделить всё
lea edx, [eax + BlockHeaderSize - 1]
{$ifdef Align16Bytes}
shr edx, 4
{$else}
shr edx, 3
{$endif}
{Is it a small block?}
cmp eax, (MaximumSmallBlockSize - BlockHeaderSize)
{Save ebx}
push ebx
{Get the IsMultiThread variable so long}
{$ifndef AssumeMultiThreaded}
mov cl, IsMultiThread
{$endif}
{Is it a small block?}
ja @NotASmallBlock
{Do we need to lock the block type?}
{$ifndef AssumeMultiThreaded}
test cl, cl
{$endif}
{Get the small block type in ebx}
movzx eax, byte ptr [AllocSize2SmallBlockTypeIndX4 + edx]
lea ebx, [SmallBlockTypes + eax * 8]
{Do we need to lock the block type?}
{$ifndef AssumeMultiThreaded}
jnz @LockBlockTypeLoop
{$else}
jmp @LockBlockTypeLoop
Уж незнаю как но этот код портит память .... не разбирался и смысла не вижу, вижу тока одно что надо уходить от этого , достали постоянные проблемы в моём коде из за вашего ....
как может съезжать собственный указатель на класс, я не знаю но это факт.
тока не надо просить выслать код его много ! очень много ...
БУДУ сейчас пробовать юзать ваш пример с классом без ваших компонентов хотя и это тоже не вариант.
всётаки вынуждаюсь читать долбаный КОМ и ДКОМ