Форум: "Начинающим";
Текущий архив: 2011.08.21;
Скачать: [xml.tar.bz2];
Внизработа с элементом списка Найти похожие ветки
← →
werewolf2 (2011-05-10 13:35) [0]нужно получить из списка объект по индексу, если равен nil, создать и вернуть созданный. делаю так:
такой вариант работы с элементом списка корректный, или можно записать подругому.
function TForm1.GetLinkerItemDecoder(Index: Int): TLinkerItemDecoder;
begin
Assert((Index >= 0) and (Index <= FLinkerItems.Count));
if FLinkerItems[Index] = nil then
FLinkerItems[Index] := TLinkerItemDecoder.Create(
FConveyerLinker.Links[Index]);
Result := FLinkerItems[Index];
end;
← →
clickmaker © (2011-05-10 13:41) [1]я бы так написал
Result := FLinkerItems[Index];
if Result = nil then begin
Result := TLinkerItemDecoder.Create(FConveyerLinker.Links[Index]);
FLinkerItems[Index] := Result;
end;
← →
Омлет © (2011-05-10 15:42) [2]> Index <= FLinkerItems.Count
Может всё-таки "Index < FLinkerItems.Count"?
← →
KSergey © (2011-05-10 16:30) [3]Выходит, FConveyerLinker.Links[] всегда такого же размера, что и FLinkerItems должен быть. Причем это не проверяется в отличии от FLinkerItems (хотя бы через Assert).
Вообще, если 2 списка строго одинакового размера параллельно ведется - я бы постарался в один список запихать структуру. А то мало ли - размерчики разъедутся и привет.
Ну это если придираться.
А какого типа FLinkerItems? если это обычный TList какой-нибудь - то Assert не нужен: внутри при доступе к элементам всегда проверяется корректность индекса.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.08.21;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.003 c