Вверх ↑
Ответов: 9906
Рейтинг: 351
#1: 2015-03-31 13:14:20 ЛС | профиль | цитата
Netspirit писал(а):
То-есть, когда изменение строки, полученной по ReadString недопустимо (в каких случаях одна и та же TData используется в нескольких компонентах)?

Думаю, что win-ХАК недопустим вообще.
Мы же работаем "из гарантий". По крайней мере - должны.

Ну вот, например
#pas
procedure THIStrMask._work_doCompare;
var sstr,str,msk:string;
begin
sstr := ReadString(_Data,_data_Str);
str := sstr+#1;
msk := _prop_Mask+#1;
if (_prop_CaseSensitive = 1) then begin
CharLower(PChar(str));
CharLower(PChar(msk));
end;
......
Вообще-то, "единичка" мне тут и нафиг не упала... Просто не очень хотелось рыть рогом землю для создания той самой "персональной копии" строки с RefCount=1.
Хотя, наверняка - есть какая-нибудь функция из System...

А теперь предположим, что нет у нас еще элементов, которые поймали бы этот win-ХАК.
Типа, протестировали -- ай-ай-ай как все хорошо!

Вот именно такой подход и есть "радиолюбительство"...
Профессионально: достаточно увидеть отсутствие ГАРАНТИЙ того, что кто-то, когда-нибудь не использует повторно такую строку.
И не надо даже искать - есть уже такие элементы, или нет. Это не очень-то и важно.

В Инженерной культуре это называется: "Не планируй себе проблемы. Попробуй сначала справиться с теми, которые возникнут и без твоего планирования"

карма: 9

0