Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

String + KOL не так прост как кажется?


Страницы:   1 2

Barloggg ©   (2008-04-14 09:47:00) 

Есть DLL. в ней форма.
хост консольный с аплетом.  в нем центральный объект.
вызываю DLL, даю этой длл прямую ссылку на главный объект.
далее ДЛЛ делает так
O.вложенныйPObj.Name:=EditBox.text;
где Name:string; О - пришедший по ссылке центральный объект.

Все кажется нормальным, Dll выключается, все работает, но на выходе падает.
причем не где-нибудь, а именно в деструкторе того злополучного объекта которому изменили строковое поле из DLL. по прямым ссылкам.

юмор в том что если сделать так:
O.вложенныйPObj.Name:='';
O.вложенныйPObj.Name:=EditBox.text;
то не бабахает.

---------------
кстати если не обнулять предварительно строковое поле перед назначением ей другой строки то такое тоже случается, но тут уже я специально не исследовал.

Причем Дельфийский хелп говорит что за строками следить не надо, все сделает компилятор.
Книга о KOL между делом одной фразой упоминает кратенько что строки надо давить в деструкторе, а то текут.

Но теперь получается что надо их обнулять при каждом назначении?
Кстати еще на эту тему, если в процедуре перед завершением сделать так s:=''; где s - локальный стринг, то компилятор не выдаст hint о том, что значением переменной не используется. тогда как на остальные переменные выдает.

а так полагаю за это ответственнен менеджер памяти?  никакими заменами системных пока не пользуюсь. Интересно, а в VCL тоже так глючит?

Есть какой удобный безопасный аналог строки?
Какие подводные камни у shortstring?


Sapersky   (2008-04-14 14:58:00) [21]

Создай новый проект-DLL и прочитай комментарий, который Дельфи вставляет в dpr-файл.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо