Главная страница
    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.45 MB
Время: 0.058 c
2-1270733447
Piero
2010-04-08 17:30
2010.08.27
занулить многомерный массив


15-1273420960
Виктор
2010-05-09 20:02
2010.08.27
Защита приложения


2-1271328693
vasya
2010-04-15 14:51
2010.08.27
Создание "компилятора" e-book


2-1273775590
Германн
2010-05-13 22:33
2010.08.27
MessageDlg и русские буквы


2-1268502232
Loki3d
2010-03-13 20:43
2010.08.27
получить размер файла или папки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский