Ognev
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Frodo_Torbins, спасибо за код, и отдельное за почитать! По коду подскажите, пожалуйста, имеет ли смысл делать отдельную процедуру SetLastElement? У меня ReliefList создается по списку путей и пока я делаю это в одной процедуре в цикле: Код: function LoadGridList(var TileGrid : TGIS_LayerPixelUDF; const PathList : TStringList) : Boolean; var n, k : Integer; TempLayer : TGIS_LayerAbstract; begin ... with TCoverTileGrid(TileGrid.UserObject) do begin SetLength(ReliefList, PathList.Count); k := 0; for n := 0 to PathList.Count - 1 do begin TempLayer := GisCreateLayer('', PathList[n]); if Assigned(TempLayer) then begin if TGIS_LayerPixel(TempLayer).IsGridImage then begin ReliefList[k] := TGIS_LayerPixel(TempLayer); ... k := k + 1; end; end; end; SetLength(ReliefList, k); end; end; | GisCreateLayer - создает грид из файла. UPD Задумался. Если, как вы написали выше, присвоение передает именно ссылку, то, наверное, нельзя так делать: ReliefList[k] := TGIS_LayerPixel(TempLayer); и переписывать TempLayer на новой итерации? Или я чего-то не так понял??? UPD2 Прошу простить мою тупость. Внимательно прочитал статью, вроде в мозге все стало на свои места. Если я все правильно понял, то приведенный выше код должен все делать правильно, так как в TempLayer на каждой итерации будет ссылка на новый созданный объект. Если так, то остался только первый вопрос - имеет смысл выделять в отдельную процедуру добавление нового элемента массива? | Всего записей: 397 | Зарегистр. 07-09-2004 | Отправлено: 20:07 26-07-2016 | Исправлено: Ognev, 21:16 26-07-2016 |
|