Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-1290
SPIRIT
2003-08-11 07:08
2003.09.01
Access глючит или Я ?


7-1681
Kikimora
2003-06-18 00:45
2003.09.01
настройка мыши и клавы


6-1538
Hff
2003-06-25 14:51
2003.09.01
Как разобрать входящую почту ?


14-1560
Всеволод Соловьёв
2003-08-12 11:23
2003.09.01
Глюкобаги форума


3-1327
sickalex
2003-08-07 16:56
2003.09.01
BDE





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский