Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

адрес - 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.053 c
6-1220349221
Guest
2008-09-02 13:53
2010.08.27
Работа с ТIdTCPServer


2-1274175056
namco
2010-05-18 13:30
2010.08.27
odbc c delphi


2-1268605992
Дмитрий
2010-03-15 01:33
2010.08.27
отправка пакета ( TcpClient )


15-1267539041
ocean
2010-03-02 17:10
2010.08.27
Как подешевле подключиться в Интернету


15-1265578203
Юрий
2010-02-08 00:30
2010.08.27
С днем рождения ! 8 февраля 2010 понедельник