Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 4
Регистрация: 25.10.2011
Сообщений: 145

Ошибка при исполнении программы

11.10.2016, 15:45. Показов 1538. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
//----------------------------------------------
procedure TForm2.btn1Click(Sender: TObject);
 var i,j,k,t: integer;
     check,checkf,checkk,checkh:boolean;
     max,min:Real;
begin
  n:=se1.Value;
  m:=se2.Value;
  Edt1.Text:='';
  //--------------------------------------------------------ïðîâåðêè íà çàïîëíÿåìîñòü âñåõ ïóíêòîâ
 
  if rg1.itemindex=-1 then
   begin
     checkf:=true;
     Application.MessageBox('Íå âûáðàíà öåëåâàÿ ôóíêöèÿ!','Ïðåäóïðåæäåíèå!',MB_ICONSTOP)
   end;
 //----------------------------------------------------------------- äëÿ ïóíêòà 3(êâàäðàòíàÿ ìàòðèöà)
  if Form1.rg1.ItemIndex<>-1 then
   begin
    for i:=1 to n  do
    for j:=1 to m do
    if (strngrd1.Cells[j-1,i-1]='')or  ((strngrd4.Visible=true) and (strngrd4.Cells[j-1,i-1]='')) or ((stringGrid1.Visible=true) and (stringGrid1.Cells[j-1,i-1]='')) then
      begin
        strngrd1.SetFocus;
        check:=true
      end;
    if check=True then
     Application.MessageBox('Íå âñå ÿ÷åéêè çàïîëíåíû!','Ïðåäóïðåæäåíèå!',MB_ICONSTOP);
 
       if Form1.rg1.ItemIndex=1 then
        begin
          if radiogroup1.itemindex=-1 then
           begin
             checkf:=true;
             Application.MessageBox('Íå âûáðàí çíàê îãðàíè÷åíèÿ!','Ïðåäóïðåæäåíèå!',MB_ICONSTOP)
            end;
          if edit1.text='' then
           begin
             checkf:=true;
             Application.MessageBox('Íå ââåäåíî çíà÷åíèå îãðàíè÷åíèÿ!','Ïðåäóïðåæäåíèå!',MB_ICONSTOP)
            end
           end;
  end;
 
 //-------------------------------------------------------
 if (not(check)) and (not(checkf))  then
   begin
      max:=c[1,1];
      min:=c[1,1];
      for i:=1 to n do
      for j:=1 to m do
       begin
         if max<c[i,j]then max:=c[i,j];
         if min>c[i,j]then min:=c[i,j]
        end;
        If rg1.ItemIndex=0 then
          begin
            for i:=1 to n do
            for j:=1 to m do
            c[i,j]:=max-c[i,j]
           end
        else
        If (rg1.ItemIndex=1)  then
        begin
          k:=0;
          for i:=1 to n do
          for j:=1 to m do
          if c[i,j]<0 then k:=k+1;
          if k>0 then
          begin
            for i:=1 to n do
            for j:=1 to m do
           c[i,j]:=c[i,j]-min;
         end;
      // end;
 
  //-------------------------------  ñ ìàòðèöåé çàïðåòîâ
   if form2.CheckBox1.Checked  then
     begin
       for  i:=1 to n do
       for j:=1 to m do
       c1[i,j]:=StrToInt(strngrd4.cells[j-1,i-1]);
      for i:=1 to n do
      for j:=1 to m do
      if (c1[i,j]=0) then
      c[i,j]:=max*1000
     end;
 
   if n>=m then
         begin
           strngrd1.colCount:=n;
           strngrd3.colCount:=n;
           If form1.rg1.ItemIndex=1 then strngrd4.colCount:=n;
           stringGrid1.colCount:=n;
           t:=n;
           for i:=1 to t do
           for j:=1 to t do
           if strngrd1.Cells[j-1,i-1]=''then strngrd1.Cells[j-1,i-1]:='0';
           // for i:=1 to t do
           // for j:=1 to t do
            //if strngrd4.Cells[j-1,i-1]=''then strngrd4.Cells[j-1,i-1]:='1';
            if form1.rg1.ItemIndex=1 then
            begin
               for i:=1 to t do
               for j:=1 to t do
               if stringGrid1.Cells[j-1,i-1]=''then StringGrid1.Cells[j-1,i-1]:='0'
             end
          end
       else
        begin
          strngrd1.RowCount:=m;
          strngrd3.RowCount:=m;
          If form1.rg1.ItemIndex=1 then strngrd4.rowCount:=m;
          stringGrid1.RowCount:=m;
          t:=m;
          for i:=1 to t do
          for j:=1 to t do
          if strngrd1.Cells[j-1,i-1]=''then strngrd1.Cells[j-1,i-1]:='0';
         // for i:=1 to t do
         // for j:=1 to t do
          //if strngrd4.Cells[j-1,i-1]=''then strngrd4.Cells[j-1,i-1]:='1';
          for i:=1 to t do
          for j:=1 to t do
          if stringGrid1.Cells[j-1,i-1]=''then stringGrid1.Cells[j-1,i-1]:='0';
        end
        end;
 
 
    for i:=1 to t do
    for j:=1 to t do
    c[i,j]:=StrToFloat(strngrd1.Cells[j-1,i-1]);
 
 
 
 
   //-------------------------------------- óäçàâà
 
   //--------------------------------------
    for i:=1 to t do
    for j:=1 to t do
      x[i,j]:=0;
      L:=0;
      VengMethod(C, X, L);
    for i:=1 to t do
    for j:=1 to t do
    strngrd3.Cells[j-1,i-1]:=IntToStr(x[i,j]);
    L:=0;
    for i:=1 to t do
    begin
    for j:=1 to t do
    if StrToInt(strngrd3.cells[j-1,i-1])=1 then
    l:=l+strtoint(strngrd1.cells[j-1,i-1])
    end;
     edt1.Text:=floatToStr(L);
  //end;
  //else Form2.Show
//end;
end;
Вылетает при исполнении программы выделяет строчку с max:=c[1,1]; Подскажите, пожалуйста в чем может быть проблема? и как исправить
Вложения
Тип файла: 7z 1.7z (2.79 Мб, 3 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.10.2016, 15:45
Ответы с готовыми решениями:

Stack Overflow: ошибка при исполнении кода консольного класса
program Numbermass; {$APPTYPE CONSOLE} uses SysUtils, Windows, masik in '..\masik.pas'; begin mascreate(); ...

stream.read(v,stream.size); //здесь ошибка при исполнении
var stream:Tfilestream; v:variant; begin stream:=TfileStream.create('c:1.jpg',fmOpenRead); V:=VarArrayCreate(, varByte); ...

ошибка при удалении программы
var st: string; reg: TRegistry; begin st := GetCurrentDir; //текущая директория reg := TRegistry.Create; reg.RootKey...

28
25.10.2016, 15:13
Студворк — интернет-сервис помощи студентам

Не по теме:

то есть нужно передавать просто С без [i,j]

0
Модератор
 Аватар для D1973
9954 / 6490 / 2461
Регистрация: 21.01.2014
Сообщений: 27,498
Записей в блоге: 3
25.10.2016, 15:57
Дык и возвращаемое значение - это TMatr (array of Integer), а присваивается это возвращаемое значение опять же одному элементу массива, т.е. переменной типа Integer... В общем - путань полная.
0
0 / 0 / 4
Регистрация: 25.10.2011
Сообщений: 145
26.10.2016, 10:02  [ТС]
Вообщем я немного запуталась. Ниже представлена повторяющаяся часть кода в программе, то что я сделала работает неправильно. Возникла идея сделать внутреннюю функцию в процедуре. Но не уверена что это правильно. В архиве прикреплена сама программа
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
//---------------------------------------------------повторяющаяся часть
      max:=c[1,1];
    min:=c[1,1];
    for i:=1 to n do
    for j:=1 to m do
       begin
         if max<c[i,j]then max:=c[i,j];
         if min>c[i,j]then min:=c[i,j]
        end;
    If rg1.ItemIndex=0 then
      begin
        for i:=1 to n do
        for j:=1 to m do
        c[i,j]:=max-c[i,j]
      end
      else
        If (rg1.ItemIndex=1)  then
        begin
          k:=0;
          for i:=1 to n do
          for j:=1 to m do
          if c[i,j]<0 then k:=k+1;
          if k>0 then
          begin
            for i:=1 to n do
            for j:=1 to m do
           c[i,j]:=c[i,j]-min;
         end;
      end;
 
  //-------------------------------  ?± ?¬?*???°???¶???© ?§?*???°?????®??
   if CheckBox1.Checked  then
     begin
       for  i:=1 to n do
       for j:=1 to m do
       S[i,j]:=StrToInt(strngrd4.cells[j-1,i-1]);
      for i:=1 to n do
      for j:=1 to m do
      if (S[i,j]=0) then
      c[i,j]:=max*1000
     end;
 
   if n>=m then
         begin
           strngrd1.colCount:=n;
           strngrd3.colCount:=n;
           If form1.rg1.ItemIndex=1 then strngrd4.colCount:=n;
           t:=n;
           for i:=1 to t do
           for j:=1 to t do
           if strngrd1.Cells[j-1,i-1]=''then
           begin
             strngrd1.Cells[j-1,i-1]:='0';
             c[i,j]:=0
           end;
          end
       else
        begin
          strngrd1.RowCount:=m;
          strngrd3.RowCount:=m;
          If form1.rg1.ItemIndex=1 then strngrd4.rowCount:=m;
          stringGrid1.RowCount:=m;
          t:=m;
          for i:=1 to t do
          for j:=1 to t do
          if strngrd1.Cells[j-1,i-1]=''then
          begin
            strngrd1.Cells[j-1,i-1]:='0';
             c[i,j]:=0
           end;  
 
        end;
 
 
 
 
    for i:=1 to t do
    for j:=1 to t do
      x[i,j]:=0;
      L:=0;
      VengMethod(C, X, L);
      //--------------------------------------------     конец
Вложения
Тип файла: 7z 1.7z (2.79 Мб, 0 просмотров)
0
6004 / 4579 / 1096
Регистрация: 29.08.2013
Сообщений: 28,278
Записей в блоге: 3
26.10.2016, 10:09
Цитата Сообщение от Виргиния Посмотреть сообщение
Ниже представлена повторяющаяся часть кода в программе, то что я сделала работает неправильно. Возникла идея сделать внутреннюю функцию в процедуре. Но не уверена что это правильно.
от нас вы что хотите?
кивнуть что неправильно?
0
Модератор
 Аватар для D1973
9954 / 6490 / 2461
Регистрация: 21.01.2014
Сообщений: 27,498
Записей в блоге: 3
26.10.2016, 10:45
Цитата Сообщение от Виргиния Посмотреть сообщение
Вообщем я немного запуталась.
И это Вы - автор сего опуса... А нам-то как разобраться в этих хитросплетениях типов, непонятно для чего введенных...
И, что характерно, итоговая сверхзадача программы не ясна абсолютно. Может, это все проще решается, если цель обозначить?
0
26.10.2016, 10:48

Не по теме:

как обычно - препод сказал сложить 1 и 1, но 2 использовать нельзя
там какой-то расчет на форме (у меня не заработал :)) )

0
26.10.2016, 10:50

Не по теме:

у меня тоже :)

0
0 / 0 / 4
Регистрация: 25.10.2011
Сообщений: 145
26.10.2016, 11:04  [ТС]
Там все работает так как нужно. Это задача о назначении нестандартных видов.
Править сам код не нужно. Необходимо только выделенный кусок сделать функцией, так как он будет вызываться несколько раз
0
26.10.2016, 11:13

Не по теме:

Цитата Сообщение от Виргиния Посмотреть сообщение
Необходимо только выделенный кусок сделать функцией
Ну кто как, а я пас...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.10.2016, 11:13

Ошибка при открытии программы.
Подскажите, как решить данную проблему: установлен Borland Delphy 7 я заказал программу у фрелансера, Базу данных(парадокс) в делфи,...

Ошибка при запуске программы
Добрый день форумчане. Срочно нужна помощь. Написал прогу для того чтобы вычислить одну математическую систему.Листинг кода прилагается, и...

Ошибка при компиляции программы
Чет в коде ошибка )хз какая) то на однерку ругается переписываю норм потом на на др. а потом вообще на процедуру ) uses Windows,...

Ошибка при закрытие программы
Выдает каждый раз эту ошибку, до этого как то выдавала, но как-то через раз, из-за чего это может быть вызвано? procedure...

Ошибка при открытии программы
Подскажите пожалуйста, что это за ошибка, создал Setup для проги, при установки на другой компьютер пишет, что обнаружена ошибка приложение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru