![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
проблема с кодом программы [D7, XP]
Bullfrog © (2006-12-15 13:36:00)
Repeat
Repeat
if resursi[i]>zayavki[j] then
Begin
StringGrid1.Cells[i,j]:=IntToStr(zayavki[j]);
Resursi[i]:=Resursi[i]-Zayavki[j];
end
else Begin
StringGrid1.Cells[i,j]:=IntToStr(Resursi[i]);
Zayavki[j]:=zayavki[j]-resursi[i];
Resursi[i]:=0;
end;
if resursi[i]=0 then inc(i) else inc(j)
Until j=zak+1
Until i=res+1;
end;
вот эта часть должна решать транспортную задачу методом северо-западного угла, выводится ошика которая для меня вообще не понятна: выводится два окна:
1. с заголовком CPU и большим количеством каких-то циферок
2. с заголовком Debagger Fault Notification, в окне указан путь к проекту и далее слова: Project1.exe faulted with message: 'acces violation at 0x00000000: read of addres 0x00000000'. Process stopped.
Что это за ошибка? Как с ней бороться?
Bullfrog (2006-12-15 15:37:00) [1]разобрался...
собака была зарыта здесь:
for i:=1 to zak do begin
resursi[i]:=StrToInt(stringgrid1.Cells[i,res+1]);
s1:=s1+resursi[i];
end;
label5.caption:='Ñóììà çàÿâîê è ðåñóðñîâ ðàâíû, ñîñòîâëÿþò:'+inttostr(s1)+' åäåíèö';
for i:=1 to res do begin
zayavki[i]:=StrToInt(stringgrid1.Cells[zak+1,i]);
s2:=s2+zayavki[i];
end;
нужно было написать:
for i:=1 to zak do begin
zayavki[i]:=StrToInt(stringgrid1.Cells[i,res+1]);
s1:=s1+zayavki[i];
end;
label5.caption:='Ñóììà çàÿâîê è ðåñóðñîâ ðàâíû, ñîñòîâëÿþò:'+inttostr(s1)+' åäåíèö';
for i:=1 to res do begin
resursi[i]:=StrToInt(stringgrid1.Cells[zak+1,i]);
s2:=s2+resursi[i];
end;
и еще нужно было исправить условие:
Until j=zak
+1 было лишним...
всем спасибо!
Bullfrog (2006-12-15 14:29:00) [2]
> Cm. [5]
>
что это?
Anatoly Podgoretsky (2006-12-15 14:16:00) [3]Cm. [5]
Bullfrog (2006-12-15 14:12:00) [4]
> Ни рес, ни зак массивов в коде не наблюдается.
извиняюсь
resursi[i]
zayavki[j]
Anatoly Podgoretsky (2006-12-15 14:09:00) [5]> Bullfrog (15.12.2006 14:04:10) [10]
Ни рес, ни зак массивов в коде не наблюдается.
Bullfrog (2006-12-15 14:08:00) [6]
>
> Это слова и только слова. У тебя в приведеном куске 7 переменных
> неизвестного типа и состояния.
Вот текст кнопки целеком:
procedure TForm1.Button2Click(Sender: TObject);
var
resursi: array [1..100] of integer;
zayavki: array [1..100] of integer;
i,j,s1,s2,res,zak : integer;
begin
//proverka na sootvetstvie zakritoi transp. zad-i
s1:=0;
s2:=0;
res:=strtoint(edit1.Text);//4
zak:=strtoint(edit2.Text);//5
for i:=1 to zak do begin
resursi[i]:=StrToInt(stringgrid1.Cells[i,res+1]);
s1:=s1+resursi[i];
end;
label5.caption:='Ñóììà çàÿâîê è ðåñóðñîâ ðàâíû, ñîñòîâëÿþò:'+inttostr(s1)+' åäåíèö';
for i:=1 to res do begin
zayavki[i]:=StrToInt(stringgrid1.Cells[zak+1,i]);
s2:=s2+zayavki[i];
end;
if s1=s2 then
begin
// showmessage('Ñóììà ðàâíà');
// stringgrid1.Cells[res+1,zak+1]:=inttostr(s1);
end
else Begin
//showmessage('Ñóììà íå ðàâíà! Ââåäèòå âåðíûå çíà÷åíèÿ');
Application.Terminate;
end;
//raspredelenie
i:=1; j:=1;
Repeat
Repeat
if resursi[i]>zayavki[j] then
Begin
StringGrid1.Cells[i,j]:=IntToStr(zayavki[j]);
Resursi[i]:=Resursi[i]-Zayavki[j];
end
else Begin
StringGrid1.Cells[i,j]:=IntToStr(Resursi[i]);
Zayavki[j]:=zayavki[j]-resursi[i];
Resursi[i]:=0;
end;
if resursi[i]=0 then inc(i) else inc(j)
Until j=zak+1
Until i=res+1;
end;
Bullfrog (2006-12-15 14:04:00) [7]
> а сторок и столбцов с гриде и массивах нужное количество?
>
> они же не авторасширяемые, их выделять надо
>
грид 4х5
и два массива
рес - 4 элемента
зак - 5 элементов
Anatoly Podgoretsky (2006-12-15 14:03:00) [8]> Bullfrog (15.12.2006 13:57:07) [7]
Это слова и только слова. У тебя в приведеном куске 7 переменных неизвестного типа и состояния.
Desdechado (2006-12-15 14:01:00) [9]а сторок и столбцов с гриде и массивах нужное количество?
они же не авторасширяемые, их выделять надо
Bullfrog (2006-12-15 13:57:00) [10]
> А переменные i и j предварительно инициализированы?
>
да
> массив, стринггрид, что угодно, что требуется создать
стриннгрид создан
Anatoly Podgoretsky (2006-12-15 13:50:00) [11]> Bullfrog (15.12.2006 13:46:03) [3]
Твой код не позволяет говорить ни подробнее, ни конкретнее.
Desdechado (2006-12-15 13:49:00) [12]> объект всмысле компонент?
массив, стринггрид, что угодно, что требуется создать
отладчик работает? протрассируй, увидишь строку, где ошибка
Bullfrog (2006-12-15 13:46:00) [13]
> Не создан какой то объект или куда то передан нулевой указатель.
>
>
т.е.? если можно поподробней
что такое нулевой указатель?
объект всмысле компонент?
Amoeba (2006-12-15 13:46:00) [14]А переменные iи jпредварительно инициализированы?
Anatoly Podgoretsky (2006-12-15 13:41:00) [15]> Bullfrog (15.12.2006 13:36:00) [0]
Не создан какой то объект или куда то передан нулевой указатель.
Reindeer Moss Eater (2006-12-15 13:39:00) [16]Вышел за границы строки или массива