Главная страница
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.056 c
15-1271655951
Дрогба
2010-04-19 09:45
2010.08.27
Хороший программист


15-1268233355
zinetz_victor@yahoo.com
2010-03-10 18:02
2010.08.27
Кого надо убить, чтобы заработала удаленная отладка в D2010??


4-1233902268
svl42
2009-02-06 09:37
2010.08.27
Копирование файлов из Recycler Bin


11-1216669322
Сашик
2008-07-21 23:42
2010.08.27
KOL: нужно ли освобождать память после VarArrayCreate...


2-1266086179
Interesting
2010-02-13 21:36
2010.08.27
Иконка в SysTray и форма