![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Здравствуйте!
ошибка list index out of bounds (0) подскажите в чем ошибка? Код:
procedure TForm2.Button5Click(Sender: TObject);
begin
for i := 0 to Form2.ListBox1.Count-1 do
if (Form2.ListBox1.Items[i] = 'Лиття під тиском')then
if (Form2.ListBox1.Items[i] = 'Виконати лиття') then
begin
a1:=50000; {вартість станка}
a2:= 8; {кількість годин на добу}
a3:= 250; {Робочих днів на рік}
a4:= 1.15; {витратин на обслуговування}
a5:= 5; {термін окупності}
a6:= 1.05; {витрати на інструмент}
a7:=0.75; {потужність станка}
a8:= 2.13; {тариф за електроенегрію}
a9:= 500; {зарплата робітника за 1 зміну}
a10:= 2; {ваговий коефіціент(податкиі зарплата)}
a11:= 2; {ваговий коефіціент (статистичнйи показник)}
a12:= 4; {ваговий коефіціент (статистичний показник)}
a13:= 0.4; {час роботи станка)}
a:=((((a1*a6*a4)/(a2*a3*a5))+(a7*a8)+((a9*a10)/a2)+((a9*a10)/2*a2)+((a9*a10)/4*a2))*(1+(a14/100)))/a15;
end;Спасибо! Последний раз редактировалось Admin, 06.10.2019 в 17:07. |
|
#2
|
||||
|
||||
|
В приведенном коде ошибку "list index out of bounds (0)" ничего не вызывает. А сама ошибка говорит о том, что индекс списка к которому идет обращение лежит в не границ. Другими словами, обращение идет к несуществующему индексу списка.
А вот здесь у меня вопрос. Код:
if (Form2.ListBox1.Items[i] = 'Лиття під тиском')then if (Form2.ListBox1.Items[i] = 'Виконати лиття') then P.S.: заверните свой код в тег, или же получите предупреждение. |
|
#3
|
|||
|
|||
|
да, но ошибка появляется при нажатии на эту кнопку.
по поводу этих 2-х строчек, мне необходимо чтобы проверялось 2 условия эсли в списку есть первое слово и второе слово тогда выполняется формула. Последний раз редактировалось ____jarik____, 06.10.2019 в 12:39. |
|
#4
|
|||
|
|||
|
вот полный текст программы, но она еще недописанная до конца.
Код:
unit Unit2;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm2 = class(TForm)
ListBox1: TListBox;
Label1: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
Edit3: TEdit;
Button3: TButton;
Edit4: TEdit;
Button4: TButton;
Button5: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
a,b:Double;
i:integer;
a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15:Double;
implementation
{$R *.dfm}
uses Unit5;
procedure TForm2.Button1Click(Sender: TObject);
begin
if (Edit1.Text = 'Лиття під тиском') or (Edit1.Text = 'Віброабразивна')
or (Edit1.Text = 'Слюсарна') or (Edit1.Text = 'Фрезерна')
or (Edit1.Text = 'Свердлильна') or (Edit1.Text = 'Хімічне окислення')
or (Edit1.Text = 'Маркування') or (Edit1.Text = 'Контроль') then
ListBox1.Items.Add(Edit1.Text)
else ShowMessage('Не правильна назва операції');
Edit1.Clear
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
if (Edit2.Text = 'Виконати лиття') or (Edit2.Text = 'Виконати обробку заготовок')
or (Edit2.Text = 'Встановити, закріпити, зняти') or (Edit2.Text = 'Запилити і розчистити місце роз’єму')
or (Edit2.Text = 'Фрезерувати пов.21, 22') or (Edit2.Text = 'Зняти задирки')
or (Edit2.Text = 'Фрезерувати пов.6, 3,16 Попередньо ') or (Edit2.Text = 'Фрезерувати пов.2, 3, 4, 10, 11, 19 начисто')
or (Edit2.Text = 'Фрезерувати пов.23') or (Edit2.Text = 'Свердлити отв. 12 під різьбу М3-6Н')
or (Edit2.Text = 'Свердлити отв.5, 8 під різьбу М2-6Н') or (Edit2.Text = 'Перевстановити')
or (Edit2.Text = 'Свердлити отв.20') or (Edit2.Text = 'Свердлити отв.9 під різьбу М2-6Н')
or (Edit2.Text = 'Розточити отв.7') or (Edit2.Text = 'Розточити отв.6')
or (Edit2.Text = 'Розточити отв.16') or (Edit2.Text = 'Нарізати різьбу М2-6Н в 2 отв. Поз.9 ')
or (Edit2.Text = 'Нарізати різьбу М2-6Н в 4 отв. Поз.5') or (Edit2.Text = 'Нарізати різьбу М2-6Н в 3 отв. Поз.8')
or (Edit2.Text = 'Змінити інструмент') or (Edit2.Text = 'Нарізати різьбу М3-6Н в 1 отв. Поз.12')
or (Edit2.Text = 'Нанести хімічне покриття') or (Edit2.Text = 'Маркувати умовний порядковий номер')
or (Edit2.Text = 'Контролювати паралельність поверхонь') then
ListBox1.Items.Add(Edit2.Text)
else ShowMessage('Не правильна назва переходу');
Edit2.Clear
end;
procedure TForm2.Button3Click(Sender: TObject);
begin
a14:=StrToInt(Edit3.Text);
Edit3.Clear
end;
procedure TForm2.Button4Click(Sender: TObject);
begin
a15:=StrToInt(Edit4.Text);
Edit4.Clear
end;
procedure TForm2.Button5Click(Sender: TObject);
begin
for i:=0 to ListBox1.Count-1 do
if (Form2.ListBox1.Items[i] = 'Лиття під тиском') and
(Form2.ListBox1.Items[i] = 'Виконати лиття') then
begin
a1:=50000; {вартість станка}
a2:= 8; {кількість годин на добу}
a3:= 250; {Робочих днів на рік}
a4:= 1.15; {витратин на обслуговування}
a5:= 5; {термін окупності}
a6:= 1.05; {витрати на інструмент}
a7:=0.75; {потужність станка}
a8:= 2.13; {тариф за електроенегрію}
a9:= 500; {зарплата робітника за 1 зміну}
a10:= 2; {ваговий коефіціент(податкиі зарплата)}
a11:= 2; {ваговий коефіціент (статистичнйи показник)}
a12:= 4; {ваговий коефіціент (статистичний показник)}
a13:= 0.4; {час роботи станка)}
a:=((((a1*a6*a4)/(a2*a3*a5))+(a7*a8)+((a9*a10)/a2)+((a9*a10)/2*a2)+((a9*a10)/4*a2))*(1+(a14/100)))/a15;
end;
if (Form2.ListBox1.Items[i] = 'Віброабразивна')then
if Form2.ListBox1.Items[i] = 'Виконати обробку заготовок' then
begin
a1:=50000; {вартість станка}
a2:= 8; {кількість годин на добу}
a3:= 250; {Робочих днів на рік}
a4:= 1.15; {витратин на обслуговування}
a5:= 5; {термін окупності}
a6:= 1.05; {витрати на інструмент}
a7:=0.75; {потужність станка}
a8:= 2.13; {тариф за електроенегрію}
a9:= 500; {зарплата робітника за 1 зміну}
a10:= 2; {ваговий коефіціент(податкиі зарплата)}
a11:= 2; {ваговий коефіціент (статистичнйи показник)}
a12:= 4; {ваговий коефіціент (статистичний показник)}
a13:= 0.4; {час роботи станка)}
a:=((((a1*a6*a4)/(a2*a3*a5))+(a7*a8)+((a9*a10)/a2)+((a9*a10)/2*a2)+((a9*a10)/4*a2))*a14)/a15;
end ;
Form5.Label1.Caption:='a' ;
Form5.Show
end;
end.Последний раз редактировалось Admin, 06.10.2019 в 17:08. |
|
#5
|
||||
|
||||
|
А вот это
Код:
if (Edit1.Text = 'Лиття під тиском') or (Edit1.Text = 'Віброабразивна') or (Edit1.Text = 'Слюсарна') or (Edit1.Text = 'Фрезерна') or (Edit1.Text = 'Свердлильна') or (Edit1.Text = 'Хімічне окислення') or (Edit1.Text = 'Маркування') or (Edit1.Text = 'Контроль') Код:
if (Edit2.Text = 'Виконати лиття') or (Edit2.Text = 'Виконати обробку заготовок') or (Edit2.Text = 'Встановити, закріпити, зняти') or (Edit2.Text = 'Запилити і розчистити місце роз’єму') or (Edit2.Text = 'Фрезерувати пов.21, 22') or (Edit2.Text = 'Зняти задирки') or (Edit2.Text = 'Фрезерувати пов.6, 3,16 Попередньо ') or (Edit2.Text = 'Фрезерувати пов.2, 3, 4, 10, 11, 19 начисто') or (Edit2.Text = 'Фрезерувати пов.23') or (Edit2.Text = 'Свердлити отв. 12 під різьбу М3-6Н') or (Edit2.Text = 'Свердлити отв.5, 8 під різьбу М2-6Н') or (Edit2.Text = 'Перевстановити') or (Edit2.Text = 'Свердлити отв.20') or (Edit2.Text = 'Свердлити отв.9 під різьбу М2-6Н') or (Edit2.Text = 'Розточити отв.7') or (Edit2.Text = 'Розточити отв.6') or (Edit2.Text = 'Розточити отв.16') or (Edit2.Text = 'Нарізати різьбу М2-6Н в 2 отв. Поз.9 ') or (Edit2.Text = 'Нарізати різьбу М2-6Н в 4 отв. Поз.5') or (Edit2.Text = 'Нарізати різьбу М2-6Н в 3 отв. Поз.8') or (Edit2.Text = 'Змінити інструмент') or (Edit2.Text = 'Нарізати різьбу М3-6Н в 1 отв. Поз.12') or (Edit2.Text = 'Нанести хімічне покриття') or (Edit2.Text = 'Маркувати умовний порядковий номер') or (Edit2.Text = 'Контролювати паралельність поверхонь') Далее... Как это по Вашему должно сработать? Код:
for i:=0 to ListBox1.Count-1 do if (Form2.ListBox1.Items[i] = 'Лиття під тиском') and (Form2.ListBox1.Items[i] = 'Виконати лиття') then |
| Этот пользователь сказал Спасибо Kailon за это полезное сообщение: | ||
____jarik____ (06.10.2019)
| ||
|
#6
|
|||
|
|||
|
это моя первая программа, не знаком с " ComboBox'e ",
Задача следующая: у меня есть тех. процесс производства детали мне необходимо его ввести в программу, название операции и название перехода. и оценить стоимость каждого перехода по формуле. в некоторых операциях есть одинаковые названия переходов (например установка) , мне необходимо чтобы программа понимала что это относится к разным операциям и у этих переходов разная стоимость. Большое спасибо! |
|
#7
|
|||
|
|||
|
"ListBox это ведь список строк, а Вы хотите чтобы она, строка из списка, равнялась и "Лиття під тиском" и "Виконати лиття" одновременно. Это как?"
хотел задать условие чтобы в списке была строка "Лиття під тиском" и строка "Виконати лиття". не одна и также строка, а просто чтобы в списке били эти 2 строки. |