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

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

Как лечить


Aleksandr ©   (2002-08-07 15:13:00) 

Достали меня эти сообщения компилятора. В коде:

procedure TStringCollectionList.SetStr( I : integer; Value: ShortString);
begin
DisposeStr( PString( Items[I]));
Items[I] := NewStr( Value)
end;

он предупреждает, что Symbol "DisposeStr" is deprecated и Symbol "NewStr" is deprecated. Чего ему надо?

и в коде
Result := GlobalAllocPtr(HeapAllocFlags, NewCapacity)

он о HeapAllocFlags он предупреждает, что Specific to a platform. То же с unit FileCtrl. Не просто же так компилер ругается? Какими-нить дефайнами это лечить, что ли?


Внук   (2002-08-08 13:06:00) [1]

Aleksandr © (08.08.02 12:12)
"а как эта программа будет работать в Windows"95 "
Термин обратной совместимости (backward compatibility) здесь имеет немного другое значение. Представь, программа написана N лет назад. Естественно, она использует вызовы устаревших функций и процедур. Если убрать их поддержку в новых ОС, то эти программы перестанут работать, например, на Win2000. Поэтому их и оставляют. По сути же эти функции представляют собой заглушки, которые либо перенаправляют вызовы новым функциям, либо не делают ничего (последнее относится к некоторым устаревшим функциям в модулях Delphi, компилятор сам вставляет необходимый код вместо вызова устаревшей функции). Новые же функции обязаны работать в любых версиях ОС, поэтому и старые программы работают в них. То есть опасения напрасны, если особо не оговорено противное.
О таких нерациональных вызовах и предупреждает компилятор. На что их менять - этот вопрос не сложен, думаю и сам справишься.


Ученик   (2002-08-08 12:46:00) [2]

А на что надо менять использование FileCtrl ?


Anatoly Podgoretsky   (2002-08-08 12:16:00) [3]

Да надо не с последствиями бороться, а с причинами.
А к чему приведет, ну скажем к поиску неожиданных ошибок, сказано не использовать, так будь законопослушным членом общества.


Aleksandr   (2002-08-08 12:12:00) [4]

2 Внук:

Во-во, именно это меня и интересовало. В том плане, что конкретно следует сделать в приведенных кодах и какие последствия это повлечет? Сорри, моего английского для толкования Хелпа не хватает. Я из него понимаю только, что методы эти - пережиток древности (а как эта программа будет работать в Windows"95 - не окажется ли, что там эта древность и нужна)?


Внук   (2002-08-07 17:32:00) [5]

function NewStr(const S: string): PString;

Description

Do not use NewStr in new applications. This function is provided for backward compatibility only.

procedure DisposeStr(P: PString);

Description

DisposeStr is only provided for backward compatibilitywith existing code that allocated a string using NewStr. Both DisposeStr and NewStr are obsolete.

То же самое можно сказать про GlobalAllocPtr...
Поэтому не от сообщений нужно избавляться, а от подобных вызовов, IMHO


Ученик   (2002-08-07 17:26:00) [6]

А где они поставлены ?


Aleksandr   (2002-08-07 17:22:00) [7]

Да в курсе я их... только одна проблема - он чихать хотел на эти директивы. Все равно показывает.


Ученик   (2002-08-07 15:45:00) [8]

Help-Delphi Delp-Index-$WARN


ZrenBy   (2002-08-07 15:45:00) [9]

{$WARN UNIT_PLATFORM OFF}
и т.д и т.п.


Gonza   (2002-08-07 15:41:00) [10]

Нажми F1 на этих сообщениях и он тебе поможет


Наверх

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