Delete, Copy, Insert всегда создают новую строку в памяти.
Объявишь ты локальную переменную или переменную класса, или не объявишь - всё равно память под новую строку будет выделена и использована результатом.
Только при присваивании не создаётся новая строка:
#pas
var s1, s2 : string;
begin
s1 := 'Новая строка';
s2 := s1; // здесь в s2 строка не создаётся, а заносится указатель на s1[1]
end;