Главная страница
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.027 c
3-1124263259
Andy BitOff
2005-08-17 11:20
2005.10.02
Все записи в StringList


3-1124188824
Xmen
2005-08-16 14:40
2005.10.02
QRRichText


1-1126598343
Alex_C
2005-09-13 11:59
2005.10.02
Глобальное положение мыши


3-1124241947
Strech
2005-08-17 05:25
2005.10.02
BLOB поля в dbf через ADO


3-1124439272
Juice
2005-08-19 12:14
2005.10.02
В компонентах iBDatSet есть своя сортировка ?