Galkov писал(а):
А что там со счетчиком ссылок после этого - совсем непонятноtsdima, вообще-то там, на эту тему, смешно как-то получается...
Посмотри внимательней
#pas
function _WStrAddRef(var str: WideString): Pointer;
asm
MOV EDX,[EAX]
TEST EDX,EDX
JE @@1
PUSH EAX
MOV ECX,[EDX-4]
SHR ECX,1
PUSH ECX
PUSH EDX
CALL SysAllocStringLen
POP EDX
TEST EAX,EAX
JE WStrError
MOV [EDX],EAX
@@1:
end;
Внимание, логическое утверждение: ЕСЛИ widestring в дельфях также имеет счетчик ссылок, ТОГДА это реализовано в ВИНДЕ (oleaut32.dll)
Т.е., если SysAllocStringLen имеет аргументом свой же результат, то он не меняется, но увеличивается некий RefCount, который учитывается при SysFreeString и SysReAllocString, SysReAllocStringLen
Что характерно, в MSDN про это ни слова не нашел...
tsdima, может ты встречал