![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
StringGrid.Rows [D7, WinXP]
Separator © (2007-10-09 12:18:00)Какой вариант правильный:
Result:= StringGrid.Rows[0].Strings[0]
или
S: TStrings;
S:= StringGrid.Rows[0];
Result:= S.Strings[0];
S.Free
Leonid Troyanovsky (2007-10-09 12:57:00) [1]
> Separator (09.10.07 12:51) [6]
> Спасибо, это и хотел узнать
Проще всего придерживаться правила им. Т.Бульбы:
кто породил объект - тот его и убивает.
--
Regards, LVT.
Separator (2007-10-09 12:51:00) [2]Спасибо, это и хотел узнать
ЮЮ (2007-10-09 12:46:00) [3]А что исходники уже закрыты? В D7 правильный вариант совсем другой:
function TStringGrid.GetRows(Index: Integer): TStrings;
begin
Result := EnsureColRow(Index, False);
end;
function TStringGrid.EnsureColRow(Index: Integer; IsCol: Boolean):
TStringGridStrings;
var
RCIndex: Integer;
PList: ^TSparseList;
begin
if IsCol then PList := @FCols else PList := @FRows;
Result := TStringGridStrings(PList^[Index]);
if Result = nil then
begin
if IsCol then RCIndex := -Index - 1 else RCIndex := Index + 1;
Result := TStringGridStrings.Create(Self, RCIndex);
PList^[Index] := Result;
end;
end;
ЗЫ. Очищать ничего не нужно. И даже вредно.
Separator (2007-10-09 12:41:00) [4]
> StringGrid.Rows[0].Strings[0] === StringGrid.Cells[0, 0]
Это я знаю, так для примера привел. В данном случае, при вызове функции Rows, нужно ли после использования очищать S, или можно просто 1 вариант использовать?
ЮЮ (2007-10-09 12:36:00) [5]StringGrid.Rows[0].Strings[0] === StringGrid.Cells[0, 0]
При чем здесь Subj? Да и в чем вопрос, собственно?
Separator (2007-10-09 12:36:00) [6]При вызове функции StringGrid.Rows создается ли новый экземпляр класса TStrings со значениями или дается ссылка на уже существующий экземпляр?
clickmaker (2007-10-09 12:32:00) [7]с какой радости во втором S.Free?