Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Внизадрес - property с индексом Найти похожие ветки
← →
cwl © (2010-03-03 07:20) [0]<Delphi 2006 без апдейтов>
такие вот объявлены типы:type
TNodePosition = (npFluid, npSolid, npFSBoundary);
Node = ^TNode;
TNode = record
X, Y, Z: Double;
NodePosition: TNodePosition;
end;
TGrid = class(TObject)
private
...
FNodes: array of array of array of TNode;
function GetNode(i, j, k: Integer): PNode;
procedure SetNode(i, j, k: Integer; const Value: PNode);
public
...
property Node[i, j, k: Integer]: PNode read GetNode write SetNode; default;
end;
function TGrid.GetNode(i, j, k: Integer): PNode;
begin
Result := @(FNodes[i, j, k])
end;
при их использовании следующим образомvar
FGrid, FUGrid, FVGrid, FWGrid: TGrid;
for i := 0 to ...
for j := 0 to ...
for k := 0 to ...
begin
FGrid[i, j, k].X := FUGrid[i, j, k].X;
FGrid[i, j, k].Y := FVGrid[i, j, k].Y;
FGrid[i, j, k].Z := FWGrid[i, j, k].Z;
end;
возвращается не значение FUGrid[i, j, k].X, а совершенно другое число
при этом такой вариант работает следующим образом(bufNode: PNode;
)
for i := 0 to ...
for j := 0 to ...
for k := 0 to ...
begin
bufDouble := FUGrid[i, j, k]^.Y; <- bufDouble получает неверное значение
bufNode := FUGrid[i, j, k]; <- bufNode получает верный адрес
bufDouble := bufNode.Y; <- извлекается верное значение
FGrid[i, j, k].X := bufDouble;
FGrid[i, j, k].Y := FVGrid[i, j, k].Y;
FGrid[i, j, k].Z := FWGrid[i, j, k].Z;
end;
отчего же так происходит? - не пойму
← →
cwl © (2010-03-03 07:21) [1]// разумеется, опущен код проверок и несущественный (вроде) в данном вопросе код
← →
Игорь Шевченко © (2010-03-03 11:15) [2]
> отчего же так происходит? - не пойму
обычно view|debug windows|cpu помогает
← →
cwl © (2010-03-03 12:55) [3]несомненно :>
// думал - пока проснусь - кто-нибудь с ходу ответит %>
← →
cwl © (2010-03-04 06:57) [4]Аз есьм лопух. все работает правильно - это я в 4-х массивах потерялся
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.057 c