Форум: "Основная";
Текущий архив: 2003.09.01;
Скачать: [xml.tar.bz2];
ВнизМасивы перекрываются!!! Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c