Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.01;
Скачать: CL | DM;

Вниз

Масивы перекрываются!!!   Найти похожие ветки 

 
INTAARI   (2003-08-19 14:06) [0]

Привет коллеги!!!
У меня возникла ситуация, когда при чтении i-го элемента одного массива, я обнаружил, что эта переменная из другого массива. Может влияет порядок Объявления переменных:

frmMeteo: TfrmMeteo;
Sector,wind:tbitmap;
TAlist,RHlist,PAlist,PTENDlist, WS6Hlist:Tlist;
WS6H,PA,PTEND:TVal;
Wind6HMas,PA1Mas: array of Double;
Wind2Mas: array [0..119] of double;
Wind1Mas: array [0..59] of double;
//TA1Mas, RH1Mas: array [0..5] of double;
TA1Mas: array [0..5] of double;//этот массив перекрывется с массивом WD_Mas
RH1Mas: array [0..5] of double;
DP1,QFE,QFF: real;
WD_Mas,WS_Mas: array [0..599] of double;


 
Camus ©   (2003-08-19 14:11) [1]

Похоже, происходит выход индекса за пределы массива. Включите опцию Range check - увидите.


 
Юрий Федоров ©   (2003-08-19 14:11) [2]

не может такого быть


 
Skier ©   (2003-08-19 14:14) [3]

>INTAARI (19.08.03 14:06)
А эта...код показать ?


 
Yurik.2002   (2003-08-19 14:21) [4]

без кода, причина в полном объёме будет не известна


 
INTAARI   (2003-08-19 14:23) [5]


procedure TfrmMeteo.TA_RH_PackStringPacket(Sender: TObject; Data: String);
var
i:integer;
begin
frmSet.stViewTARH.Caption:="$WIXDR,C,"+data;
for i:=5 downto 1 do
begin
TA1Mas[i]:=TA1Mas[i-1];
RH1Mas[i]:=RH1Mas[i-1];
end;
try
TA1Mas[0]:=strtofloat(copy(Data,1,Pos(",",Data)-1));
except
// TA1Mas[0]:=0;
end;
delete(Data,1,(Pos(",",Data)+6));
try
RH1Mas[0]:=strtofloat(copy(Data,1,Pos(",",Data)-1));
except
RH1Mas[0]:=0;
end;
//Массив температуры за минуту
stTA1A.Caption:=floattostr(Mean(TA1Mas));
//Массив влажности за минуту
stRH1A.Caption:=floattostr(Mean(RH1Mas));
end;

procedure TfrmMeteo.Wind_PackStringPacket(Sender: TObject;
Data: String);
var
i:integer;
begin //Разбор пакета скорости и направления
frmSet.stViewWSWD.Caption:="$PAMWV,"+data;
for i:=599 downto 1 do
begin
WS_Mas[i]:=WS_Mas[i-1];
WD_Mas[i]:=WD_Mas[i-1];
end;
try
//Добавление в начало нового значеиния направления
WD_Mas[0]:=strtofloat(copy(Data,1,Pos(",",Data)-1));
except
WD_Mas[0]:=0;
end;
delete(data,1,(Pos(",",data)+2));
try
//Добавление в начало нового значеиния скорости
WS_Mas[0]:=strtofloat(copy(Data,1,Pos(",",Data)-1));
except
WS_Mas[0]:=0;
end;

//Расчет скорости за 10, 2, 1 минуты интервал 1 сек
for I := 0 to 599 do
begin
if i<=120 then Wind2Mas[i]:=WS_Mas[i];
if i<=60 then Wind1Mas[i]:=WS_Mas[i];
end;
stWS10A.Caption:=floattostr(Mean(WS_Mas));
stWS10M.Caption:=floattostr(MinValue(WS_Mas));
stWS10X.Caption:=floattostr(MaxValue(WS_Mas));
stWS2A.Caption:=floattostr(Mean(Wind2Mas));
stWS2M.Caption:=floattostr(MinValue(Wind2Mas));
stWS2X.Caption:=floattostr(MaxValue(Wind2Mas));
stWS1A.Caption:=floattostr(Mean(Wind1Mas));

//Расчет направления за 10, 2, 1 минуты интервал 1 сек
for I := 0 to 599 do
begin
if i<=120 then Wind2Mas[i]:=WD_Mas[i];
if i<=60 then Wind1Mas[i]:=WD_Mas[i];
end;
stWD10A.Caption:=floattostr(Mean(WD_Mas));
stWD10M.Caption:=floattostr(MinValue(WD_Mas));
stWD10X.Caption:=floattostr(MaxValue(WD_Mas));
stWD2A.Caption:=floattostr(Mean(Wind2Mas));
stWD2M.Caption:=floattostr(MinValue(Wind2Mas));
stWD2X.Caption:=floattostr(MaxValue(Wind2Mas));
stWD1A.Caption:=floattostr(Mean(Wind1Mas));



 
INTAARI   (2003-08-19 14:31) [6]


> Camus © (19.08.03 14:11) [1]

Опцию включил но ошибки не появилось


 
Skier ©   (2003-08-19 14:34) [7]

>INTAARI (19.08.03 14:31) [6]
Похоже что ошибка в логике твоей программы (?)



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

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

Наверх




Память: 0.48 MB
Время: 0.022 c
1-1381
Dimon
2003-08-16 19:27
2003.09.01
Синтаксис С++:(seen_eap |= PW_MESSAGE); Как это выгл. в Delphi??


6-1540
Oleg__
2003-06-11 10:23
2003.09.01
RasGetEntryDialParams


14-1668
jack128
2003-08-12 13:14
2003.09.01
Именниники 12 августа


14-1604
Ajax
2003-08-13 00:02
2003.09.01
Сотовая связь в Питере


14-1548
Maks Realov
2003-08-14 15:51
2003.09.01
Интересно, за что мою ветку убили?