![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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
Назначение кода совсем непонятно :)