Главная страница
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.48 MB
Время: 0.054 c
15-1264415891
Ega23
2010-01-25 13:38
2010.08.27
Всех Татьян - с Татьяниным Днём!


15-1272952103
Phoenix
2010-05-04 09:48
2010.08.27
Как подерживать себя в работоспособном состоянии.


2-1269016126
pavel_guzhanov
2010-03-19 19:28
2010.08.27
При сравнении содержимого двух TImage получаю AV


2-1273851859
Shurick
2010-05-14 19:44
2010.08.27
Графика


15-1269530562
И. Павел
2010-03-25 18:22
2010.08.27
Перестали загружаться файлы (PHP)