Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.02;
Скачать: 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 вся ветка

Текущий архив: 2005.10.02;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.054 c
2-1124560843
SpyBoy
2005-08-20 22:00
2005.10.02
PasToStr-?


9-1117520325
WondeRu
2005-05-31 10:18
2005.10.02
GLScene. Как рисовать обычными OpenGL командами?


4-1123062015
MegaVolt
2005-08-03 13:40
2005.10.02
Как правильно обработать hdc Identifies the device control?


4-1123252993
i-s-v
2005-08-05 18:43
2005.10.02
Как обрабатывать WM_MOUSEMОVE для контрола


1-1126460974
Дмитрий_05
2005-09-11 21:49
2005.10.02
Как создавать компоненты на Notebook