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

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

SetLength или присваивание? [D7]


push eax ©   (2006-12-09 14:55:00) 

Есть такая функция:
[code]
function ParseText(Value: string): string;
begin
 // выделение под Result
 for i := 0 to Length(Value) -1 do
 Result[i] := Value[i]
end;
[/code]

Я видел что под Result выделяют память как SetLength(Result, Length(Value)) так и просто приравниванием к оригиналу Result := Value. Конечно результат не более оригинала. Это одинаково хорошо?


Loginov Dmitry   (2006-12-10 10:26:00) [1]

Чтобы убедиться в неправильности [2] провел несколько тестов. Выяснилось, что Result[i] := Value[i] всеж-таки делает изменяемую строку уникальной, и никакого побочноя явления не происходит.


Loginov Dmitry   (2006-12-10 10:16:00) [2]

> Anatoly Podgoretsky ©   (09.12.06 16:03)


Точно ?!


Anatoly Podgoretsky   (2006-12-09 16:03:00) [3]

> push eax  (09.12.2006 14:55:00)  [0]

Результаты разные, в первом случае уникальная строка, а во втором побочное явление изменение как результата так и оригинала.

Result[i] := Value[i] не изменит счетчик ссылок


Джо   (2006-12-09 15:02:00) [4]

> Это одинаково хорошо?

А зависимости от ситуации.

Обрати внимание:
for i := 1to Length(Value)do

Назначение кода совсем непонятно :)


Наверх

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