Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

проблема с кодом программы [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]

Вышел за границы строки или массива


Наверх

Титульная страница Поиск, карта сайта Написать письмо