Вниз
Скачать: CL | DM;

Invalid Pointer Operation при работе с дин. массивом.   Найти похожие ветки 

← →
Kolan ©   (2005-09-10 14:25) [0]

Здравствуйте,
 Вот проблемма:
 Есть у меня большая структура:

PMeasurmentData = ^TMeasurmentData;
 TMeasurmentData = record
   {OutPut}
   OutPutGraff: TArrayOfTPair;
   OutPutMeasurments: TArrayOfMeasurmentGrid;
   OutPutResAntiRes: TArrayOfTPair;
   OutPutName: string;
   OutPutCapacity: Double;

   {Future compatibility.}
   OutPutActiveGarff: TArrayOfTPair;

   {InPut}
   InPutRange: TArrayOfLongint;
   InPutFindResonanceRange: TArrayOfLongint;
   InPutStep: Single;
   InPutOperator: string;
   InPutDevice: string;
   InPutDateTime: TDateTime;
   InPutNumber: Integer;

   {}
   IsThisRecordFilled: Boolean;
   MeasurmentState: TMeasurmentStates;

   CurrentPosition: Longint;
   LastCalledPosition: Longint;
 end;


Работа сней заключается в заполнении её дин. массивов. для этого я сначала инициализирую её:

with MeasurmentDataRec^ do
 begin
  {...}

   if InPutStep = 0 then
     GreffLength := 0
   else
     GreffLength := Round( (InPutRange[High(InPutRange)]
       - InPutRange[Low(InPutRange)] ) / InPutStep) + 1;

   SetLength(OutPutGraff, GreffLength);

   SetLength(OutPutMeasurments, 0);
   SetLength(OutPutResAntiRes, 0);
   {Future compatibility.}
   SetLength(OutPutActiveGarff, 0);
   OutPutCapacity := 0;
   OutPutName := IntToStr(Number) + " " + Device;
   IsThisRecordFilled := True;
   CurrentPosition := 0;
   LastCalledPosition := 0;
 end;
   

Ну а потом заполняю. Числа приходят с прибора, а всё это дело крутится в потоке.

Размер массива OutPutGraff(это график того что пришло с прибора) зависит от InPutRange (это левый и правый края отрезка, значений X ).

Кроме того таких стуктур у меня много.

Ошибка такая: Установил я пределы 43000 и 44000 с шагом 10 те кол во эл OutPutGraff = 101.

Всё нормально. Если я теперь сделаю 43000 43100 то получу Invalid Pointer Operation в выделенной строке.

Причем  если я померел первое измерение(напоминаю у меня  много таких записей ) 43000 и 44000 потом второе 43000 43100 и сново вернулся к первому , и измеряю 43000 43100 то ошибки нет.

А если подрад одно и тоже мерить то ошибка есть.

Вопрос где её искать?


← →
Kolan ©   (2005-09-12 23:10) [1]

up


← →
DiamondShark ©   (2005-09-12 23:30) [2]

В приведённом фрагменте ошибок нет.
В приведённом описании смысла нет.


← →
Ученик чародея ©   (2005-09-12 23:35) [3]

>>Kolan ©   (10.09.05 14:25)

Мухоморы и бубен не пробовали? В таких случаях помогает.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.026 c
1-1126671066
Denizzz
2005-09-14 08:11
2005.10.02
Как получить серийный номер жесткого диска?


8-1116202959
Alpine
2005-05-16 04:22
2005.10.02
Работа с GIF !


14-1126477969
Мексиканец
2005-09-12 02:32
2005.10.02
Какой трассер лучше юзать?


6-1117959108
carmen
2005-06-05 12:11
2005.10.02
Нужна библиотека для обмена данніми по модему


6-1117895852
volser
2005-06-04 18:37
2005.10.02
Как узнать сколько байт было передано и получено по сетевой карте




   Наверх