vada писал(а):Видимо всетаки проблемы не в зоопарке строк а в менеджере памяти.В JAVA я зачастую даже не парюсь с дистроями объектов.
Сборщик мусора с подсчётом ссылок - кажется, одна из самых дискутируемых тем. В FPC (и Delphi, если в новых версиях ничего радикально не поменялось) такое есть только для string'ов, открытых массивов (array of ...), интерфейсов и (если не ошибаюсь) variant'ов. Помню, на "Королевстве" кто-то даже выкладывал обвязку, реализующую такое для любых данных. Внутри всё было сделано через string.
Max Rusov писал(а):Но в DLL всегда лучше передавать PChar
Ура! ура! Я наконец услышан :-)
Max Rusov писал(а):Совместим - означает, что вы можете одному присвоить другой, а не писать все что Вам вздумается.
Значит, у нас немного разные понятия о совместимости. Я под этим понимаю использование данных одного типа в любом месте, где используются данные другого типа. В худшем случае, с явным приведением - чтоб компилятор не ругался. А то, о чём Вы говорите, так и называется - "совместимость по присваиванию".
Max Rusov писал(а):Если это Class
Это object, почти такой же, как в Вашем примере выше. Но с pChar'ом, а не string'ом внутри. Вроде бы, мы всё обсудили. А тут вдруг какой-то Class всплыл...
Max Rusov писал(а):Не знаю, поддерживает ли Object перегрузку операторов
Перегрузку поддерживает afaik любой тип:
- Код: Выделить всё
Operator:=(src:integer):string;
Begin
result:=IntToStr(src)
End;