Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.17.45] |
|
Сообщ.
#1
,
|
|
|
Вот пришла мысль сделать свой TStringHelper
тестовая демка: uses StrUtils type TStrZ1 = record _separator, _s: string; procedure Init(s: string); function GetValue(index: integer): TStrZ1; function LineNo(index: integer) : TStrZ1; property Lines[index: integer] : TStrZ1 read LineNo; property Values[index: integer] : TStrZ1 read GetValue; property Text : string read _s; end; function TStrZ(s: string): TStrZ1; procedure TStrZ1.Init(s: string); begin _s := s; _separator := ':'; end; function TStrZ1.LineNo(index: integer): TStrZ1; begin Result.Init(_s.Split([#13#10])[index]); end; function TStrZ1.GetValue(index: integer): TStrZ1; begin Result.Init(_s.Split([_separator])[index]); end; function TStrZ(s: string): TStrZ1; begin Result.Init(s); end; use: Читаем вторую строку memo, ставим сепаратор, получаем второе значение строки. var StrZ1: TStrZ1; begin StrZ1:= TStrZ(Memo1.Text).Lines[1]; StrZ1._separator := ':'; Edit1.Text := StrZ1.Values[1].Text; Собственно вопрос: такое использование Record приведёт к утечке ? Или делать для всех TStrZ1 Finalize ? |
Сообщ.
#2
,
|
|
|
Нет, не приведет.
Утечка с записями и строками только тогда, когда идет смешение действий неявного (средствами языка) и явного (на уровне памяти и указателей) выделения/удаления. |