0 / 0 / 0
Регистрация: 29.04.2016
Сообщений: 3
1

Преобразовать программу через форму в Delphi

29.04.2016, 23:28. Показов 574. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, нужна помощь. Программа по умножению бесконечно больших чисел
В строке "a[i]:=c+a[i]*b" пишет, что операнды имеют неприводимые типы. Понимаю, что это из-за того, что разные типы, но как исправить - не могу понять.
Если заметите еще какие-либо ошибки, прошу ткнуть носом, ибо профан в этом деле
Pascal
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
uses vcl;
 
//$VCLDESIGN+
var
  Form1: Form;
  Button1: Button;
  Edit1: Edit;
  Edit2: Edit;
  TextBox1: TextBox;
//$VCLDESIGN-
procedure Button1OnClick;
var
 s1,b:string;
 i,c:integer;
   a:array[0..105] of integer;
begin
s1:= Edit1.Text;
b:= Edit2.Text;
c:=0;
a[0]:=length(s1);
   for i:=1 to a[0] do
      a[a[0]-i+1]:=Ord(s1[i])-48;
 
   for i:=1 to a[0] do
    begin
      a[i]:=c+a[i]*b;
      c:=a[i] div 10;
      a[i]:=a[i] mod 10;
    end;
   While c>0 do
   begin
      a[0]:=a[0]+1;
      a[a[0]]:=c mod 10;
      c:=c div 10;
   end;
   if a[a[0]]=0 then Write(0)
   else
   for i:=a[0] downto 1 do
 
procedure InitControls;
begin
  Form1:= Form.Create(0,0,380,339);
  Form1.InitControl(True,False,alNone,crDefault,clBtnFace,'Форма1','');
  Button1:= Button.Create(Form1,88,136,75,25);
  Button1.InitControl(True,True,alNone,crDefault,0,'Кнопка1','');
  Edit1:= Edit.Create(Form1,56,24,121,21);
  Edit1.InitControl(True,True,alNone,crDefault,clWindow,'','');
  Edit2:= Edit.Create(Form1,56,80,121,21);
  Edit2.InitControl(True,True,alNone,crDefault,clWindow,'','');
  TextBox1:= TextBox.Create(Form1,56,192,185,89);
  TextBox1.InitControl(True,True,alNone,crDefault,clWindow,'','');
  TextBox1.ScrollBars:= ssNone;
  Form1.Position:= poScreenCenter;
  Form1.Show;
end;
 
begin
  InitControls;
 
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.04.2016, 23:28
Ответы с готовыми решениями:

Преобразовать программу из консольного окна в виндовс форму
Суть такова. Из консольного приложения просто переделать в виндовс форм. Программу не менять...

Добавление изображений в БД через форму в Delphi
Дороу, ребята. Тут такая проблемка вышла, а сам я додуматься не могу. Вот фотки формы:

Как ввести дату в БД через форму Delphi
В бд имеется поле дата с форматом (Дата/Время) нужно через Edit на форме Delphi по нажатию кнопки...

преобразовать программу через do и while
не знаю как переделать программу через do и while, помогите, тест программы: #include <cstdlib>...

3
0 / 0 / 0
Регистрация: 29.04.2016
Сообщений: 3
02.05.2016, 21:31  [ТС] 2
решение проблемы нашел. исправил
теперь другая проблема. форма не отображает ответ в textbox. облазил весь интернет, решения найти не могу
помогите, пожалуйста
Pascal
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
uses vcl;
 
//$VCLDESIGN+
var
  Form1: Form;
  TextLabel1: TextLabel;
  TextLabel2: TextLabel;
  Button1: Button;
  Edit1: Edit;
  Edit2: Edit;
  TextBox1: TextBox;
  Button2: Button;
  Edit3: Edit;
//$VCLDESIGN-
procedure Button1OnClick;
Function CompLong(s1,s2:string):integer;
var
   a,len1,len2,i:integer;
   b:boolean;
begin
   a:=0;
   b:=true;
   s1:=Edit1.Text;
   s2:=Edit2.Text;
   len1:=length(s1);
   len2:=length(s2);
   if len1>len2 then begin a:= 1; b:=false; end;
   if len1<len2 then begin a:=-1; b:=false; end;
   if b then
   for i:=1 to len1 do
    begin
      if Ord(s1[i])-48>Ord(s2[i])-48 then begin a:= 1; break; end;
      if s1[i]<s2[i] then begin a:=-1; break; end;
    end;
   CompLong:=a;
end;
 
var
   s1,s2:string;
   i,len,c,x:integer;
   a,b:array[1..1000] of integer;
 
begin
 
  c:=0;
   len:=length(s2);
   for i:=1 to len do
      b[len-i+1]:=Ord(s2[i])-48;
   len:=length(s1);
 
   for i:=1 to len do
      a[len-i+1]:=Ord(s1[i])-48;
   if Complong(s1,s2)<0 then begin
      Write('-');
      len:=length(s2);
      for i:=1 to len do begin
         x:=a[i];
         a[i]:=b[i];
         b[i]:=x;
      end;
   end;
   for i:=1 to len do
    begin
      c:=c+a[i]-b[i]+10;
      a[i]:= c mod 10;
      if c < 10 then c:=-1 else c:=0;
    end;
   while (a[len]=0) and (len>1) do len:=len-1;
   for i:=len downto 1 do
   TextBox1.caption:=IntToStr(a[i]);
end;
 
procedure Button2OnClick;
var
   s1,s2:string;
   a,b:array[1..100] of integer;
   len,i,c:integer;
begin
   c:=0;
   s1:=Edit1.Text;
   s2:=Edit2.Text;
   len:=length(s1);
   for i:=1 to len do
      a[len-i+1]:=Ord(s1[i])-48;
   len:=length(s2);
   for i:=1 to len do
      b[len-i+1]:=Ord(s2[i])-48;
 
   if length(s1)>length(s2) then len:=length(s1)
   else len:=length(s2);
   for i:=1 to len do
    begin
      c:=c+a[i]+b[i];
      a[i]:=c mod 10;
      c:=c div 10;
    end;
   if c>0 then begin
      len:=len+1;
      a[len]:=c;
    end;
   for i:=len downto 1 do
   TextBox1.caption:=IntToStr(a[i]);
end;
 
procedure InitControls;
begin
  Form1:= Form.Create(0,0,380,339);
  Form1.InitControl(True,False,alNone,crDefault,clBtnFace,'Действия с бесконечнобольшими числами','');
  TextLabel1:= TextLabel.Create(Form1,48,24,38,13);
  TextLabel1.InitControl(True,True,alNone,crDefault,clBtnFace,'Первое число','');
  TextLabel2:= TextLabel.Create(Form1,48,80,121,13);
  TextLabel2.InitControl(True,True,alNone,crDefault,clBtnFace,'Второче число','');
  Button1:= Button.Create(Form1,72,160,75,25);
  Button1.InitControl(True,True,alNone,crDefault,0,'Вычитание','');
  Edit1:= Edit.Create(Form1,48,40,121,21);
  Edit1.InitControl(True,True,alNone,crDefault,clWindow,'','');
  Edit2:= Edit.Create(Form1,48,96,121,21);
  Edit2.InitControl(True,True,alNone,crDefault,clWindow,'','');
  TextBox1:= TextBox.Create(Form1,72,216,185,89);
  TextBox1.InitControl(False,True,alNone,crDefault,clWindow,'','');
  TextBox1.ScrollBars:= ssNone;
  Button2:= Button.Create(Form1,208,160,75,25);
  Button2.InitControl(True,True,alNone,crDefault,0,'Сложение','');
  Edit3:= Edit.Create(Form1,232,40,121,21);
  Edit3.InitControl(False,False,alNone,crDefault,clWhite,'','');
  Edit3.BevelOuter:= bvNone;
  Form1.Position:= poScreenCenter;
  Form1.Show;
end;
 
begin
  InitControls;
 
end.
0
Hello Kitty
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
02.05.2016, 21:42 3
может быть так? ( не проверял и незнаю точно )
Pascal
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
uses vcl;
 
//$VCLDESIGN+
var
  Form1: Form;
  TextLabel1: TextLabel;
  TextLabel2: TextLabel;
  Button1: Button;
  Edit1: Edit;
  Edit2: Edit;
  TextBox1: TextBox;
  Button2: Button;
  Edit3: Edit;
//$VCLDESIGN-
procedure Button1OnClick;
Function CompLong(s1,s2:string):integer;
var
   a,len1,len2,i:integer;
   b:boolean;
begin
   a:=0;
   b:=true;
   s1:=Edit1.Text;
   s2:=Edit2.Text;
   len1:=length(s1);
   len2:=length(s2);
   if len1>len2 then begin a:= 1; b:=false; end;
   if len1<len2 then begin a:=-1; b:=false; end;
   if b then
   for i:=1 to len1 do
    begin
      if Ord(s1[i])-48>Ord(s2[i])-48 then begin a:= 1; break; end;
      if s1[i]<s2[i] then begin a:=-1; break; end;
    end;
   CompLong:=a;
end;
 
var
   s1,s2:string;
   i,len,c,x:integer;
   a,b:array[1..1000] of integer;
 
begin
 
  c:=0;
   len:=length(s2);
   for i:=1 to len do
      b[len-i+1]:=Ord(s2[i])-48;
   len:=length(s1);
 
   for i:=1 to len do
      a[len-i+1]:=Ord(s1[i])-48;
   if Complong(s1,s2)<0 then begin
      Write('-');
      len:=length(s2);
      for i:=1 to len do begin
         x:=a[i];
         a[i]:=b[i];
         b[i]:=x;
      end;
   end;
   for i:=1 to len do
    begin
      c:=c+a[i]-b[i]+10;
      a[i]:= c mod 10;
      if c < 10 then c:=-1 else c:=0;
    end;
   while (a[len]=0) and (len>1) do len:=len-1;
   for i:=len downto 1 do
   TextBox1.Text:=IntToStr(a[i]);
end;
 
procedure Button2OnClick;
var
   s1,s2:string;
   a,b:array[1..100] of integer;
   len,i,c:integer;
begin
   c:=0;
   s1:=Edit1.Text;
   s2:=Edit2.Text;
   len:=length(s1);
   for i:=1 to len do
      a[len-i+1]:=Ord(s1[i])-48;
   len:=length(s2);
   for i:=1 to len do
      b[len-i+1]:=Ord(s2[i])-48;
 
   if length(s1)>length(s2) then len:=length(s1)
   else len:=length(s2);
   for i:=1 to len do
    begin
      c:=c+a[i]+b[i];
      a[i]:=c mod 10;
      c:=c div 10;
    end;
   if c>0 then begin
      len:=len+1;
      a[len]:=c;
    end;
   for i:=len downto 1 do
   TextBox1.Text:=IntToStr(a[i]);
end;
 
procedure InitControls;
begin
  Form1:= Form.Create(0,0,380,339);
  Form1.InitControl(True,False,alNone,crDefault,clBtnFace,'Действия с бесконечнобольшими числами','');
  TextLabel1:= TextLabel.Create(Form1,48,24,38,13);
  TextLabel1.InitControl(True,True,alNone,crDefault,clBtnFace,'Первое число','');
  TextLabel2:= TextLabel.Create(Form1,48,80,121,13);
  TextLabel2.InitControl(True,True,alNone,crDefault,clBtnFace,'Второче число','');
  Button1:= Button.Create(Form1,72,160,75,25);
  Button1.InitControl(True,True,alNone,crDefault,0,'Вычитание','');
  Edit1:= Edit.Create(Form1,48,40,121,21);
  Edit1.InitControl(True,True,alNone,crDefault,clWindow,'','');
  Edit2:= Edit.Create(Form1,48,96,121,21);
  Edit2.InitControl(True,True,alNone,crDefault,clWindow,'','');
  TextBox1:= TextBox.Create(Form1,72,216,185,89);
  TextBox1.InitControl(False,True,alNone,crDefault,clWindow,'','');
  TextBox1.ScrollBars:= ssNone;
  Button2:= Button.Create(Form1,208,160,75,25);
  Button2.InitControl(True,True,alNone,crDefault,0,'Сложение','');
  Edit3:= Edit.Create(Form1,232,40,121,21);
  Edit3.InitControl(False,False,alNone,crDefault,clWhite,'','');
  Edit3.BevelOuter:= bvNone;
  Form1.Position:= poScreenCenter;
  Form1.Show;
end;
 
begin
  InitControls;
 
end.
или так
Pascal
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
uses vcl;
 
//$VCLDESIGN+
var
  Form1: Form;
  TextLabel1: TextLabel;
  TextLabel2: TextLabel;
  Button1: Button;
  Edit1: Edit;
  Edit2: Edit;
  TextBox1: TextBox;
  Button2: Button;
  Edit3: Edit;
//$VCLDESIGN-
procedure Button1OnClick;
Function CompLong(s1,s2:string):integer;
var
   a,len1,len2,i:integer;
   b:boolean;
begin
   a:=0;
   b:=true;
   s1:=Edit1.Text;
   s2:=Edit2.Text;
   len1:=length(s1);
   len2:=length(s2);
   if len1>len2 then begin a:= 1; b:=false; end;
   if len1<len2 then begin a:=-1; b:=false; end;
   if b then
   for i:=1 to len1 do
    begin
      if Ord(s1[i])-48>Ord(s2[i])-48 then begin a:= 1; break; end;
      if s1[i]<s2[i] then begin a:=-1; break; end;
    end;
   CompLong:=a;
end;
 
var
   s1,s2:string;
   i,len,c,x:integer;
   a,b:array[1..1000] of integer;
 
begin
 
  c:=0;
   len:=length(s2);
   for i:=1 to len do
      b[len-i+1]:=Ord(s2[i])-48;
   len:=length(s1);
 
   for i:=1 to len do
      a[len-i+1]:=Ord(s1[i])-48;
   if Complong(s1,s2)<0 then begin
      Write('-');
      len:=length(s2);
      for i:=1 to len do begin
         x:=a[i];
         a[i]:=b[i];
         b[i]:=x;
      end;
   end;
   for i:=1 to len do
    begin
      c:=c+a[i]-b[i]+10;
      a[i]:= c mod 10;
      if c < 10 then c:=-1 else c:=0;
    end;
   while (a[len]=0) and (len>1) do len:=len-1;
   for i:=len downto 1 do
   TextBox1.Add( IntToStr(a[i]) );
end;
 
procedure Button2OnClick;
var
   s1,s2:string;
   a,b:array[1..100] of integer;
   len,i,c:integer;
begin
   c:=0;
   s1:=Edit1.Text;
   s2:=Edit2.Text;
   len:=length(s1);
   for i:=1 to len do
      a[len-i+1]:=Ord(s1[i])-48;
   len:=length(s2);
   for i:=1 to len do
      b[len-i+1]:=Ord(s2[i])-48;
 
   if length(s1)>length(s2) then len:=length(s1)
   else len:=length(s2);
   for i:=1 to len do
    begin
      c:=c+a[i]+b[i];
      a[i]:=c mod 10;
      c:=c div 10;
    end;
   if c>0 then begin
      len:=len+1;
      a[len]:=c;
    end;
   for i:=len downto 1 do
   TextBox1.Add(IntToStr(a[i]));
end;
 
procedure InitControls;
begin
  Form1:= Form.Create(0,0,380,339);
  Form1.InitControl(True,False,alNone,crDefault,clBtnFace,'Действия с бесконечнобольшими числами','');
  TextLabel1:= TextLabel.Create(Form1,48,24,38,13);
  TextLabel1.InitControl(True,True,alNone,crDefault,clBtnFace,'Первое число','');
  TextLabel2:= TextLabel.Create(Form1,48,80,121,13);
  TextLabel2.InitControl(True,True,alNone,crDefault,clBtnFace,'Второче число','');
  Button1:= Button.Create(Form1,72,160,75,25);
  Button1.InitControl(True,True,alNone,crDefault,0,'Вычитание','');
  Edit1:= Edit.Create(Form1,48,40,121,21);
  Edit1.InitControl(True,True,alNone,crDefault,clWindow,'','');
  Edit2:= Edit.Create(Form1,48,96,121,21);
  Edit2.InitControl(True,True,alNone,crDefault,clWindow,'','');
  TextBox1:= TextBox.Create(Form1,72,216,185,89);
  TextBox1.InitControl(False,True,alNone,crDefault,clWindow,'','');
  TextBox1.ScrollBars:= ssNone;
  Button2:= Button.Create(Form1,208,160,75,25);
  Button2.InitControl(True,True,alNone,crDefault,0,'Сложение','');
  Edit3:= Edit.Create(Form1,232,40,121,21);
  Edit3.InitControl(False,False,alNone,crDefault,clWhite,'','');
  Edit3.BevelOuter:= bvNone;
  Form1.Position:= poScreenCenter;
  Form1.Show;
end;
 
begin
  InitControls;
 
end.
0
0 / 0 / 0
Регистрация: 29.04.2016
Сообщений: 3
02.05.2016, 23:20  [ТС] 4
увы и ах, но нет
0
02.05.2016, 23:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.05.2016, 23:20
Помогаю со студенческими работами здесь

Создать через форму Delphi в MS Excel таблицу квадратов чисел от 1 до 99
Создать через форму Delphi в MS Excel таблицу квадратов чисел от 1 до 99

Вывести текст через программу в Delphi через COMPort на бегущую строку
Доброго времени суток, форумчане! Дали задание вывести через COMPort текст на табло(бегущую...

Преобразовать программу через процедуры
Как преобразовать эту программу через процедуры

Как создать авторизацию через форму Delphi чтоб логин и пароль сохранялись в БД MS SQL?
Есть программа. Первое окно для авторизации, после авторизации откривается форма программи. как...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru