Вверх ↑
Ответов: 9906
Рейтинг: 351
#1: 2008-03-12 13:26:00 ЛС | профиль | цитата
tsdima писал(а):
А StringToOleStr это уже КОЛовское, и конструктор там - SysAllocString, т.е. тоже "у нутре оси"

А разве только о FPC речь
Вот нарезка из Delpi7\Source\Rtl\Sys\System.pas

#pas
function StringToOleStr(const Source: string): PWideChar;
begin
Result := nil;
_WStrFromPCharLen(WideString(Pointer(Result)), PChar(Pointer(Source)), Length(Source));
end;
Кстати, как эта фигня вообще работает (а в варианте Дельфи работает именно она) - не пойму...
Какие-то не декларированные особенности языка: результат работы конструктора WideString - не уничтожается по выходе из зоны видимости
Полный атас...

tsdima писал(а):
Делается с любыми объектами. Не делается с указателями

Это как бы зависит от того, что называть словом "делается"
Для тебя, как человека, пишущего в основном на C, этого должно означать вызов деструктора
В этом аспекте - дулю с маком
Типовой случай из наших кодов

#pas
dt := _doData('test');
Да, создастся невидимая локальная переменная (которая потом радостно перекопируется в dt - тоже дурдом ведь), и ее адрес пойдет вторым аргументом в ф-ю _doData
Да, сей объект будет уничтожен по выходе из зоны видимости.
А вот как правильно уничтожать - тебя никто спрашивать не будет, хоть целое сочинение напиши в деструкторе, не будет он вызываться
А ручками вызвать Destroy ты тоже не можешь - имени-то у этой невидимой локальной переменной и нету

tsdima писал(а):
я вообще до сих пор не въеду в принципы Дельфячих объектов/указателей_на_объекты

Аналогично
Только результаты каких-то изнурительных экспериментов за плечами...
И фиг его знает, где про это можно прочитать
Инет завален литературой для пользователей, которым "а больше мне нафиг и не надо"...
А то, что именуется литературой "для профессионалов", больше напоминает расширенное справочное пособие.
Типа, профессиналам тоже понимание не обязательно, им достаточно просто инфы про либы напихать по самое нихочу - и пусть подавятся
карма: 9

0