Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.059 c
15-1264270853
Нехочуха
2010-01-23 21:20
2010.08.27
Атака мертвецов


2-1272025204
tippa
2010-04-23 16:20
2010.08.27
как хранить большие списки в самой программе?


15-1268649323
Из батника
2010-03-15 13:35
2010.08.27
Удаление каталога


2-1269347442
12
2010-03-23 15:30
2010.08.27
Выделяю память. Освобождать Пушкин или сам?


2-1269057230
Delphist2
2010-03-20 06:53
2010.08.27
бинарный поиск в listbox





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский