Pascal модуль windows не найден

Evgeniykondraty

0 / 0 / 0

Регистрация: 07.06.2017

Сообщений: 80

16.05.2020, 14:15. Показов 3492. Ответов 9

Метки нет (Все метки)


Доброго времени суток, помогите разобрать программку, почему пишет wincrt не найден, что нужно добавить и почему комментарий крякозябрами отображаются?

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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
uses graph,wincrt;
const m=4;{дЁЈга }
      n=3;{а §¬Ґа ¬ ваЁж Є®нддЁжЁҐ­в®ў}
type mas=array[1..m] of real;
     mtr=array[1..n,1..n] of real;
var xa,ya,xb,yb:mas;{дЁЈгал Ї®б«Ґ ЇҐаҐ¬ҐйҐ­Ёп}
    a,r:mtr;{¬ ваЁжл ЇаҐ®Ўа §®ў ­Ё©}
    xc,yc:integer;{業ва нЄа ­ }
    ms:real;{¬ бив Ў ¤«п ЇҐаҐў®¤  ॠ«м­ле Є®®а¤Ё­ в ў нЄа ­­лҐ}
    i,j,k:byte;{бзҐвзЁЄЁ жЁЄ«®ў}
    s:string;{бва®Є  ¤«п ўлў®¤  ⥪бв }
    c:char;{бЁ¬ў®«-Є®¬ ­¤ }
procedure Osi;{аЁб®ў ­ЁҐ ®бҐ© Є®®а¤Ё­ в}
begin
setcolor(9);
line(0,yc,getmaxX,yc);{®бЁ}
line(xc,0,xc,getmaxY);
for i:=1 to 10 do{¬ ЄбЁ¬ «м­®Ґ Є®«ЁзҐбвў® § бҐзҐЄ ў ®¤­г бв®а®­г}
if i mod 2=0 then
  begin
    line(xc-3,yc-round(i*ms),xc+3,yc-round(i*ms));{§ бҐзЄЁ ­  ®бЁ “}
    line(xc-3,yc+round(i*ms),xc+3,yc+round(i*ms));
    {Ї®¤ЇЁбм ®бЁ “}
    str(i,s);
    outtextXY(xc-20,yc-round(i*ms),s);{ᮮ⢥вб⢥­­® § бҐзЄ ¬}
    outtextXY(xc-25,yc+round(i*ms),'-'+s);
    line(xc+round(i*ms),yc-3,xc+round(i*ms),yc+3); {§ бҐзЄЁ ­  ®бЁ •}
    line(xc-round(i*ms),yc-3,xc-round(i*ms),yc+3);
    {Ї®¤ЇЁбм ®бЁ •}
    outtextXY(xc+round(i*ms),yc+10,s);
    outtextXY(xc-round(i*ms),yc+10,'-'+s);
  end;
{業ва}
outtextXY(xc+5,yc+10,'0');
{Ї®¤ЇЁбЁ Є®­ж®ў ®бҐ©}
outtextXY(getmaxX-10,yc-10,'X');
outtextXY(xc+5,10, 'Y');
setcolor(14);
outtextXY(30,10,'Rotate - 1');
outtextXY(30,30,'Stretching - 2');
outtextXY(30,50,'Compression - 3');
outtextXY(30,70,'MirrorX - 4');
outtextXY(30,90,'MirrorY - 5');
outtextXY(30,110,'MoveRight - 6');
outtextXY(30,130,'MoveLeft - 7');
outtextXY(30,150,'MoveUp - 8');
outtextXY(30,170,'MoveDown - 9');
outtextXY(30,190,'Exit - Esc');
end;
procedure Picture(x,y:mas);{аЁб®ў ­ЁҐ дЁЈгал}
begin
Osi;
setcolor(12);
moveto(xc+round(ms*x[1]),yc-round(ms*y[1]));
lineto(xc+round(ms*x[3]),yc-round(ms*y[3]));
lineto(xc+round(ms*x[2]),yc-round(ms*y[2]));
lineto(xc+round(ms*x[4]),yc-round(ms*y[4]));
lineto(xc+round(ms*x[1]),yc-round(ms*y[1]));
end;
procedure Ed; { ЇаЁбў®Ґ­ЁҐ ¬ ваЁжҐ R §­ зҐ­Ёп Ґ¤Ё­Ёз­®© }
begin
for i:=1 to n do
 begin                             {  1 0 0  }
  for j:=1 to n do  r[i,j]:=0;     {  0 1 0  }
  r[i,i]:=1;                       {  0 0 1  }
 end;
end;
procedure Mult; {г¬­®¦Ґ­ЁҐ ¬ ваЁж Ђ Ё R:  R = B = A*R }
var b:mtr;
    z:real;
begin
for i:=1 to n do
for j:=1 to n do
 begin
  z:=0;
  for k:=1 to n do
  z:=z+a[i,k]*r[k,j];
  b[i,j]:=z
 end;
for i:=1 to n do
for j:=1 to n do
r[i,j]:=b[i,j]
end;
procedure Stretch;  {а бзҐв ¬ ваЁж Ђ Ё R ¤«п а бвпЈЁў ­Ёп дЁЈгал}
begin
for i:=1 to n do
 begin                         {  1  0  0  }
  for j:=1 to n do a[i,j]:=0;  {  0 1.05  0  }
  a[i,i]:=1;                   {  0  0  1  }
 end;
a[2,2]:=1.05;{Є®нддЁжЁҐ­в а бв殮­Ёп}
a[1,1]:=1.05;
Mult;
end;
procedure Compress;  {а бзҐв ¬ ваЁж Ђ Ё R ¤«п б¦ вЁп дЁЈгал}
begin
for i:=1 to n do
 begin                         {  1  0  0  }
  for j:=1 to n do a[i,j]:=0;  {  0 1.05  0  }
  a[i,i]:=1;                   {  0  0  1  }
 end;
a[2,2]:=0.95;{Є®нддЁжЁҐ­в а бв殮­Ёп}
a[1,1]:=0.95;
Mult;
end;
procedure MirrorX;  {а бзҐв ¬ ваЁж Ђ Ё R ¤«п ®ва ¦Ґ­Ёп дЁЈгал Ї® •}
begin
for i:=1 to n do
 begin                         {  1  0  0  }
  for j:=1 to n do a[i,j]:=0;  {  0 -1  0  }
  a[i,i]:=1;                   {  0  0  1  }
 end;
a[2,2]:=-1;
Mult;
end;
procedure MirrorY;  {а бзҐв ¬ ваЁж Ђ Ё R ¤«п ®ва ¦Ґ­Ёп дЁЈгал Ї® •}
begin
for i:=1 to n do
 begin                         { -1  0  0  }
  for j:=1 to n do a[i,j]:=0;  {  0  1  0  }
  a[i,i]:=1;                   {  0  0  1  }
 end;
a[1,1]:=-1;
Mult;
end;
procedure MoveY(dy:integer);  {а бзҐв ¬ ваЁж Ђ Ё R ¤«п ЇҐаҐ¬ҐйҐ­Ёп дЁЈгал Ї® Y}
begin
for i:=1 to n do
 begin                         {  1  0  0  }
  for j:=1 to n do a[i,j]:=0;  {  0  1 dy  }
  a[i,i]:=1;                   {  0  0  1  }
 end;
a[2,3]:=dy;
Mult;
end;
procedure MoveX(dx:integer);  {а бзҐв ¬ ваЁж Ђ Ё R ¤«п ЇҐаҐ¬ҐйҐ­Ёп дЁЈгал Ї® Y}
begin
for i:=1 to n do
 begin                         {  1  0  dx }
  for j:=1 to n do a[i,j]:=0;  {  0  1  0  }
  a[i,i]:=1;                   {  0  0  1  }
 end;
a[1,3]:=dx;
Mult;
end;
procedure Rotate(u:real); {а бзҐв ¬ ваЁж Ђ Ё R ¤«п Ї®ў®а®в   дЁЈгал}
var c, s: real;                                                                               {---­  гЈ®« alfa(а ¤)---}
begin                {  cos(u) -sin(u) 0  }
for i:=1 to 3 do     {  sin(u)  cos(u) 0  }
for j:=1 to 3 do     {   0       0     1  }
a[i,j]:=0;
a[3,3]:=1;
c:=cos(u);   a[1,1]:= c;  a[2,2]:=c;
s:=sin(u);   a[1,2]:=-s;  a[2,1]:=s;
Mult;
end;
 
procedure New_XY;{а бзҐв ­®ўле Є®®а¤Ё­ в дЁЈгал Ї® Ёб室­л¬}
begin           {б ЁбЇ®«м§®ў ­ЁҐ¬ ¬ ваЁжл ЇаҐ®Ўа §®ў ­Ёп R}
for i:=1 to m do
 begin
  xb[i]:=xa[i]*r[1, 1]+ ya[i]*r[1, 2]+ r[1, 3];
  yb[i]:=xa[i]*r[2, 1]+ ya[i]*r[2, 2]+ r[2, 3]
 end;
end;
 
 
begin
initGraph(xc,yc,'');
xc:=getmaxX div 2;
yc:=getmaxY div 2; { 業ва нЄа ­  }
ms:=(yc-30)/10;
{§ ¤ ¤Ё¬ Є®®а¤Ё­ вл ўҐаиЁ­ д¬Јгал}
xa[1]:=-2;ya[1]:=1;
xa[2]:=2;ya[2]:=2;
xa[3]:=2;ya[3]:=-2;
xa[4]:=-2;ya[4]:=-1;
Picture(xa,ya);{Ёб室­л©}
repeat
if keypressed then
 begin
  c:=readkey;
  case c of
  #49:begin
      cleardevice;
      Ed;
      Rotate(pi/3); {Ї®ў®а®в ­  pi/4 ®в­®бЁвҐ«м­® ­ з «  Є®®а¤Ё­ в}
      New_XY;
      Picture(xb,yb);
      xa:=xb;ya:=yb;{§ Ї®¬­Ё¬ ­®ў®Ґ Ї®«®¦Ґ­ЁҐ}
      end;
  #50:begin
      cleardevice;
      Ed;
      Stretch; { а бв殮­ЁҐ}
      New_XY;
      Picture(xb,yb);
      xa:=xb;ya:=yb;
      end;
  #51:begin
      cleardevice;
      Ed;
      Compress; { б¦ вЁҐ}
      New_XY;
      Picture(xb,yb);
      xa:=xb;ya:=yb;
      end;
  #52:begin
      cleardevice;
      Ed;
      MirrorX; { ®ва ¦Ґ­ЁҐ Ї® •}
      New_XY;
      Picture(xb,yb);
      xa:=xb;ya:=yb;
      end;
  #53:begin
      cleardevice;
      Ed;
      MirrorY; { ®ва ¦Ґ­ЁҐ Ї® Y}
      New_XY;
      Picture(xb,yb);
      xa:=xb;ya:=yb;
      end;
  #54:begin
      cleardevice;
      Ed;
      MoveX(1); { ®ва ¦Ґ­ЁҐ Ї® •}
      New_XY;
      Picture(xb,yb);
      xa:=xb;ya:=yb;
      end;
  #55:begin
      cleardevice;
      Ed;
      MoveX(-1); { ®ва ¦Ґ­ЁҐ Ї® Y}
      New_XY;
      Picture(xb,yb);
      xa:=xb;ya:=yb;
      end;
  #56:begin
      cleardevice;
      Ed;
      MoveY(1); { ®ва ¦Ґ­ЁҐ Ї® •}
      New_XY;
      Picture(xb,yb);
      xa:=xb;ya:=yb;
      end;
  #57:begin
      cleardevice;
      Ed;
      MoveY(-1); { ®ва ¦Ґ­ЁҐ Ї® Y}
      New_XY;
      Picture(xb,yb);
      xa:=xb;ya:=yb;
      end;
  #27:exit;
  end;
 end;
until c=#27;
end.

Добавлено через 12 минут
wincrt заменил на ABC, теперь пишет setcolor(9); — неизвестное имя setcolor, помогите разобраться.



0



cpp_developer

Эксперт

20123 / 5690 / 1417

Регистрация: 09.04.2010

Сообщений: 22,546

Блог

16.05.2020, 14:15

Ответы с готовыми решениями:

Где скачать модуль Wincrt
Не могу найти модуль wincrt, который бы нормально компилировался. Может кто-то скинуть хотя бы ссылку где его можна скачать? или сам…

Паскаль. Ошибка : Модуль wincrlt не найден.
Помогите исправить. Не находит модуль.

program mas1;
uses wincrt;
type
matrix=array of real;
var
a:matrix;
i,j:integer; …

Ошибка Uses Wincrt
Программа должна выводить значение указанных чисел.Выдает ошибку в ‘Uses Wincrt’.Как-то можно это исправить?!

Если убрать…

9

Puporev

Почетный модератор

64312 / 47609 / 32742

Регистрация: 18.05.2008

Сообщений: 115,181

16.05.2020, 16:22

Сообщение было отмечено Evgeniykondraty как решение

Решение

Просто Вы пытаетесь код из Free Pascal запустить в Паскаль АВС. Это не выйдет, нужно переписывать.

Добавлено через 41 минуту
Для простого АВС.

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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
uses graphABC,Crt;
const m=4;{фигур }
      n=3;{размер матриц коэффициентов}
type mas=array[1..m] of real;
     mtr=array[1..n,1..n] of real;
var xa,ya,xb,yb:mas;{фигуры после перемещения}
    a,r:mtr;{матрицы преобразований}
    xc,yc:integer;{центр экрана }
    ms:real;{масштаб для перевода реальных координат в экранные}
    i,j,k:byte;{счетчики циклов}
    s:string;{строка для вывода текста}
    c:char;{символ-команда}
procedure Osi;{рисование осей координат}
begin
setpencolor(clBlue);
line(0,yc,windowwidth,yc);{оси}
line(xc,0,xc,windowheight);
for i:=1 to 10 do{максимальное количество засечек в одну сторону}
if i mod 2=0 then
  begin
    line(xc-3,yc-round(i*ms),xc+3,yc-round(i*ms));{засечки на оси У}
    line(xc-3,yc+round(i*ms),xc+3,yc+round(i*ms));
    {подпись оси У}
    str(i,s);
    textout(xc-20,yc-round(i*ms),s);{соответственно засечкам}
    textout(xc-25,yc+round(i*ms),'-'+s);
    line(xc+round(i*ms),yc-3,xc+round(i*ms),yc+3); {засечки на оси Х}
    line(xc-round(i*ms),yc-3,xc-round(i*ms),yc+3);
    {подпись оси Х}
    textout(xc+round(i*ms),yc+10,s);
    textout(xc-round(i*ms),yc+10,'-'+s);
  end;
{центр}
textout(xc+5,yc+10,'0');
{подписи концов осей}
textout(windowwidth-10,yc-10,'X');
textout(xc+5,10, 'Y');
setfontcolor(clBlue);
textout(30,0,'Rotate - 1');
textout(30,20,'Stretching - 2');
textout(30,40,'Compression - 3');
textout(30,60,'MirrorX - 4');
textout(30,80,'MirrorY - 5');
textout(30,100,'MoveRight - 6');
textout(30,120,'MoveLeft - 7');
textout(30,140,'MoveUp - 8');
textout(30,160,'MoveDown - 9');
textout(30,180,'Exit - Esc');
end;
procedure Draw(x,y:mas);{рисование фигуры}
begin
Osi;
setpencolor(clRed);
moveto(xc+round(ms*x[1]),yc-round(ms*y[1]));
lineto(xc+round(ms*x[3]),yc-round(ms*y[3]));
lineto(xc+round(ms*x[2]),yc-round(ms*y[2]));
lineto(xc+round(ms*x[4]),yc-round(ms*y[4]));
lineto(xc+round(ms*x[1]),yc-round(ms*y[1]));
end;
procedure Ed; { присвоение матрице R значения единичной }
begin
for i:=1 to n do
 begin                             {  1 0 0  }
  for j:=1 to n do  r[i,j]:=0;     {  0 1 0  }
  r[i,i]:=1;                       {  0 0 1  }
 end;
end;
procedure Mult; {умножение матриц А и R:  R = B = A*R }
var b:mtr;
    z:real;
begin
for i:=1 to n do
for j:=1 to n do
 begin
  z:=0;
  for k:=1 to n do
  z:=z+a[i,k]*r[k,j];
  b[i,j]:=z
 end;
for i:=1 to n do
for j:=1 to n do
r[i,j]:=b[i,j]
end;
procedure Stretch;  {расчет матриц А и R для растягивания фигуры}
begin
for i:=1 to n do
 begin                         {  1  0  0  }
  for j:=1 to n do a[i,j]:=0;  {  0 1.05  0  }
  a[i,i]:=1;                   {  0  0  1  }
 end;
a[2,2]:=1.05;{коэффициент растяжения}
a[1,1]:=1.05;
Mult;
end;
procedure Compress;  {расчет матриц А и R для сжатия фигуры}
begin
for i:=1 to n do
 begin                         {  1  0  0  }
  for j:=1 to n do a[i,j]:=0;  {  0 1.05  0  }
  a[i,i]:=1;                   {  0  0  1  }
 end;
a[2,2]:=0.95;{коэффициент растяжения}
a[1,1]:=0.95;
Mult;
end;
procedure MirrorX;  {расчет матриц А и R для отражения фигуры по Х}
begin
for i:=1 to n do
 begin                         {  1  0  0  }
  for j:=1 to n do a[i,j]:=0;  {  0 -1  0  }
  a[i,i]:=1;                   {  0  0  1  }
 end;
a[2,2]:=-1;
Mult;
end;
procedure MirrorY;  {расчет матриц А и R для отражения фигуры по Х}
begin
for i:=1 to n do
 begin                         { -1  0  0  }
  for j:=1 to n do a[i,j]:=0;  {  0  1  0  }
  a[i,i]:=1;                   {  0  0  1  }
 end;
a[1,1]:=-1;
Mult;
end;
procedure MoveY(dy:integer);  {расчет матриц А и R для перемещения фигуры по Y}
begin
for i:=1 to n do
 begin                         {  1  0  0  }
  for j:=1 to n do a[i,j]:=0;  {  0  1 dy  }
  a[i,i]:=1;                   {  0  0  1  }
 end;
a[2,3]:=dy;
Mult;
end;
procedure MoveX(dx:integer);  {расчет матриц А и R для перемещения фигуры по Y}
begin
for i:=1 to n do
 begin                         {  1  0  dx }
  for j:=1 to n do a[i,j]:=0;  {  0  1  0  }
  a[i,i]:=1;                   {  0  0  1  }
 end;
a[1,3]:=dx;
Mult;
end;
procedure Rotate(u:real); {расчет матриц А и R для поворота  фигуры}
var c, s: real;                                                                               {---н  угол alfa(р д)---}
begin                {  cos(u) -sin(u) 0  }
for i:=1 to 3 do     {  sin(u)  cos(u) 0  }
for j:=1 to 3 do     {   0       0     1  }
a[i,j]:=0;
a[3,3]:=1;
c:=cos(u);   a[1,1]:= c;  a[2,2]:=c;
s:=sin(u);   a[1,2]:=-s;  a[2,1]:=s;
Mult;
end;
 
procedure New_XY;{расчет новых координат фигуры по исходным}
begin           {с использованием матрицы преобразования R}
for i:=1 to m do
 begin
  xb[i]:=xa[i]*r[1, 1]+ ya[i]*r[1, 2]+ r[1, 3];
  yb[i]:=xa[i]*r[2, 1]+ ya[i]*r[2, 2]+ r[2, 3]
 end;
end;
 
 
begin
xc:=windowwidth div 2;
yc:=windowheight div 2; { центр экрана }
ms:=(yc-30)/10;
{зададим координаты вершин фигуры}
xa[1]:=-2;ya[1]:=1;
xa[2]:=2;ya[2]:=2;
xa[3]:=2;ya[3]:=-2;
xa[4]:=-2;ya[4]:=-1;
Draw(xa,ya);{исходный}
repeat
if keypressed then
 begin
  c:=readkey;
  case c of
  #49:begin
      clearwindow;
      Ed;
      Rotate(pi/3); {поворот на  pi/4 относительно начала координат}
      New_XY;
      Draw(xb,yb);
      xa:=xb;ya:=yb;{запомним новое положение}
      end;
  #50:begin
      clearwindow;
      Ed;
      Stretch; { растяжение}
      New_XY;
      Draw(xb,yb);
      xa:=xb;ya:=yb;
      end;
  #51:begin
      clearwindow;
      Ed;
      Compress; { сжатие}
      New_XY;
      Draw(xb,yb);
      xa:=xb;ya:=yb;
      end;
  #52:begin
      clearwindow;
      Ed;
      MirrorX; { отражение по Х}
      New_XY;
      Draw(xb,yb);
      xa:=xb;ya:=yb;
      end;
  #53:begin
      clearwindow;
      Ed;
      MirrorY; {отражение по Y}
      New_XY;
      Draw(xb,yb);
      xa:=xb;ya:=yb;
      end;
  #54:begin
      clearwindow;
      Ed;
      MoveX(1); { перемещение по Х}
      New_XY;
      Draw(xb,yb);
      xa:=xb;ya:=yb;
      end;
  #55:begin
      clearwindow;
      Ed;
      MoveX(-1); { перемещение по Y}
      New_XY;
      Draw(xb,yb);
      xa:=xb;ya:=yb;
      end;
  #56:begin
      clearwindow;
      Ed;
      MoveY(1); {перемещение по Y}
      New_XY;
      Draw(xb,yb);
      xa:=xb;ya:=yb;
      end;
  #57:begin
      clearwindow;
      Ed;
      MoveY(-1); { перемещение по Y}
      New_XY;
      Draw(xb,yb);
      xa:=xb;ya:=yb;
      end;
  #27:exit;
  end;
 end;
until c=#27;
end.

Добавлено через 47 минут
Для АВС.net.

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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
uses graphABC;
const m=4;{фигур }
      n=3;{размер матриц коэффициентов}
type mas=array[1..m] of real;
     mtr=array[1..n,1..n] of real;
var xa,ya,xb,yb:mas;{фигуры после перемещения}
    a,r:mtr;{матрицы преобразований}
    xc,yc:integer;{центр экрана }
    ms:real;{масштаб для перевода реальных координат в экранные}
    s:string;{строка для вывода текста}
    procedure Osi;{рисование осей координат}
begin
setpencolor(clBlue);
line(0,yc,windowwidth,yc);{оси}
line(xc,0,xc,windowheight);
for var i:=1 to 10 do{максимальное количество засечек в одну сторону}
if i mod 2=0 then
  begin
    line(xc-3,yc-round(i*ms),xc+3,yc-round(i*ms));{засечки на оси У}
    line(xc-3,yc+round(i*ms),xc+3,yc+round(i*ms));
    {подпись оси У}
    str(i,s);
    textout(xc-20,yc-round(i*ms),s);{соответственно засечкам}
    textout(xc-25,yc+round(i*ms),'-'+s);
    line(xc+round(i*ms),yc-3,xc+round(i*ms),yc+3); {засечки на оси Х}
    line(xc-round(i*ms),yc-3,xc-round(i*ms),yc+3);
    {подпись оси Х}
    textout(xc+round(i*ms),yc+10,s);
    textout(xc-round(i*ms),yc+10,'-'+s);
  end;
{центр}
textout(xc+5,yc+10,'0');
{подписи концов осей}
textout(windowwidth-10,yc-10,'X');
textout(xc+5,10, 'Y');
setfontcolor(clBlue);
textout(30,0,'Rotate - 1');
textout(30,20,'Stretching - 2');
textout(30,40,'Compression - 3');
textout(30,60,'MirrorX - 4');
textout(30,80,'MirrorY - 5');
textout(30,100,'MoveRight - 6');
textout(30,120,'MoveLeft - 7');
textout(30,140,'MoveUp - 8');
textout(30,160,'MoveDown - 9');
textout(30,180,'Exit - Esc');
end;
procedure Draw(x,y:mas);{рисование фигуры}
begin
Osi;
setpencolor(clRed);
moveto(xc+round(ms*x[1]),yc-round(ms*y[1]));
lineto(xc+round(ms*x[3]),yc-round(ms*y[3]));
lineto(xc+round(ms*x[2]),yc-round(ms*y[2]));
lineto(xc+round(ms*x[4]),yc-round(ms*y[4]));
lineto(xc+round(ms*x[1]),yc-round(ms*y[1]));
end;
procedure Ed; { присвоение матрице R значения единичной }
begin
for var i:=1 to n do
 begin                             {  1 0 0  }
  for var j:=1 to n do  r[i,j]:=0;     {  0 1 0  }
  r[i,i]:=1;                       {  0 0 1  }
 end;
end;
procedure Mult; {умножение матриц А и R:  R = B = A*R }
var b:mtr;
    z:real;
begin
for var i:=1 to n do
for var j:=1 to n do
 begin
  z:=0;
  for var k:=1 to n do
  z:=z+a[i,k]*r[k,j];
  b[i,j]:=z
 end;
for var i:=1 to n do
for var j:=1 to n do
r[i,j]:=b[i,j]
end;
procedure Stretch;  {расчет матриц А и R для растягивания фигуры}
begin
for var i:=1 to n do
 begin                         {  1  0  0  }
  for var j:=1 to n do a[i,j]:=0;  {  0 1.05  0  }
  a[i,i]:=1;                   {  0  0  1  }
 end;
a[2,2]:=1.05;{коэффициент растяжения}
a[1,1]:=1.05;
Mult;
end;
procedure Compress;  {расчет матриц А и R для сжатия фигуры}
begin
for var i:=1 to n do
 begin                         {  1  0  0  }
  for var j:=1 to n do a[i,j]:=0;  {  0 1.05  0  }
  a[i,i]:=1;                   {  0  0  1  }
 end;
a[2,2]:=0.95;{коэффициент растяжения}
a[1,1]:=0.95;
Mult;
end;
procedure MirrorX;  {расчет матриц А и R для отражения фигуры по Х}
begin
for var i:=1 to n do
 begin                         {  1  0  0  }
  for var j:=1 to n do a[i,j]:=0;  {  0 -1  0  }
  a[i,i]:=1;                   {  0  0  1  }
 end;
a[2,2]:=-1;
Mult;
end;
procedure MirrorY;  {расчет матриц А и R для отражения фигуры по Х}
begin
for var i:=1 to n do
 begin                         { -1  0  0  }
  for var j:=1 to n do a[i,j]:=0;  {  0  1  0  }
  a[i,i]:=1;                   {  0  0  1  }
 end;
a[1,1]:=-1;
Mult;
end;
procedure MoveY(dy:integer);  {расчет матриц А и R для перемещения фигуры по Y}
begin
for var i:=1 to n do
 begin                         {  1  0  0  }
  for var j:=1 to n do a[i,j]:=0;  {  0  1 dy  }
  a[i,i]:=1;                   {  0  0  1  }
 end;
a[2,3]:=dy;
Mult;
end;
procedure MoveX(dx:integer);  {расчет матриц А и R для перемещения фигуры по Y}
begin
for var i:=1 to n do
 begin                         {  1  0  dx }
  for var j:=1 to n do a[i,j]:=0;  {  0  1  0  }
  a[i,i]:=1;                   {  0  0  1  }
 end;
a[1,3]:=dx;
Mult;
end;
procedure Rotate(u:real); {расчет матриц А и R для поворота  фигуры}
var c, s: real;                                                                               {---н  угол alfa(р д)---}
begin                {  cos(u) -sin(u) 0  }
for var i:=1 to 3 do     {  sin(u)  cos(u) 0  }
for var j:=1 to 3 do     {   0       0     1  }
a[i,j]:=0;
a[3,3]:=1;
c:=cos(u);   a[1,1]:= c;  a[2,2]:=c;
s:=sin(u);   a[1,2]:=-s;  a[2,1]:=s;
Mult;
end;
 
procedure New_XY;{расчет новых координат фигуры по исходным}
begin           {с использованием матрицы преобразования R}
for var i:=1 to m do
 begin
  xb[i]:=xa[i]*r[1, 1]+ ya[i]*r[1, 2]+ r[1, 3];
  yb[i]:=xa[i]*r[2, 1]+ ya[i]*r[2, 2]+ r[2, 3]
 end;
end;
 
procedure Vybor(c:char);
begin
case c of
  #49:begin
      clearwindow;
      Ed;
      Rotate(pi/3); {поворот на  pi/4 относительно начала координат}
      New_XY;
      Draw(xb,yb);
      xa:=xb;ya:=yb;{запомним новое положение}
      end;
  #50:begin
      clearwindow;
      Ed;
      Stretch; { растяжение}
      New_XY;
      Draw(xb,yb);
      xa:=xb;ya:=yb;
      end;
  #51:begin
      clearwindow;
      Ed;
      Compress; { сжатие}
      New_XY;
      Draw(xb,yb);
      xa:=xb;ya:=yb;
      end;
  #52:begin
      clearwindow;
      Ed;
      MirrorX; { отражение по Х}
      New_XY;
      Draw(xb,yb);
      xa:=xb;ya:=yb;
      end;
  #53:begin
      clearwindow;
      Ed;
      MirrorY; {отражение по Y}
      New_XY;
      Draw(xb,yb);
      xa:=xb;ya:=yb;
      end;
  #54:begin
      clearwindow;
      Ed;
      MoveX(1); { перемещение по Х}
      New_XY;
      Draw(xb,yb);
      xa:=xb;ya:=yb;
      end;
  #55:begin
      clearwindow;
      Ed;
      MoveX(-1); { перемещение по Y}
      New_XY;
      Draw(xb,yb);
      xa:=xb;ya:=yb;
      end;
  #56:begin
      clearwindow;
      Ed;
      MoveY(1); {перемещение по Y}
      New_XY;
      Draw(xb,yb);
      xa:=xb;ya:=yb;
      end;
  #57:begin
      clearwindow;
      Ed;
      MoveY(-1); { перемещение по Y}
      New_XY;
      Draw(xb,yb);
      xa:=xb;ya:=yb;
      end;
  #27:window.close;
  end;
 end;
begin
xc:=windowwidth div 2;
yc:=windowheight div 2; { центр экрана }
ms:=(yc-30)/10;
{зададим координаты вершин фигуры}
xa[1]:=-2;ya[1]:=1;
xa[2]:=2;ya[2]:=2;
xa[3]:=2;ya[3]:=-2;
xa[4]:=-2;ya[4]:=-1;
Draw(xa,ya);{исходный}
onkeypress:=Vybor;
  
end.



1



0 / 0 / 0

Регистрация: 07.06.2017

Сообщений: 80

18.05.2020, 16:40

 [ТС]

А почему шрифт не поддерживается, что может быть?



0



Почетный модератор

64312 / 47609 / 32742

Регистрация: 18.05.2008

Сообщений: 115,181

18.05.2020, 16:41

Какой шрифт, где?



0



Evgeniykondraty

0 / 0 / 0

Регистрация: 07.06.2017

Сообщений: 80

19.05.2020, 19:10

 [ТС]

const m=4;{дЁЈга } вот это почему так, и еще такая просьба, почему Mirror X — 4 не подчиняется, вроде значения разные от Mirror Y — 5

Добавлено через 49 секунд

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#52:begin
      clearwindow;
      Ed;
      MirrorX; { отражение по Х}
      New_XY;
      Draw(xb,yb);
      xa:=xb;ya:=yb;
      end;
  #53:begin
      clearwindow;
      Ed;
      MirrorY; {отражение по Y}
      New_XY;
      Draw(xb,yb);
      xa:=xb;ya:=yb;
      end;

Для ABC.net



0



Puporev

Почетный модератор

64312 / 47609 / 32742

Регистрация: 18.05.2008

Сообщений: 115,181

19.05.2020, 19:17

Сообщение было отмечено Evgeniykondraty как решение

Решение

Сообщение от Evgeniykondraty

const m=4;{дЁЈга } вот это почему так

Потому что у меня там фигура из 4 точек, поэтому массивы

Pascal
1
2
type mas=array[1..m] of real;
var xa,ya,xb,yb:mas;

Сообщение от Evgeniykondraty

почему Mirror X — 4 не подчиняется, вроде значения разные от Mirror Y — 5

Не понял.



1



0 / 0 / 0

Регистрация: 07.06.2017

Сообщений: 80

19.05.2020, 19:56

 [ТС]

а все разобрался!!



0



duck_nukem

3 / 3 / 0

Регистрация: 23.08.2021

Сообщений: 71

25.04.2022, 21:25

Добрый вечер, товарищи! А подскажите, как работают строки в коде

Pascal
1
2
3
4
5
moveto(xc+round(ms*x[1]),yc-round(ms*y[1]));
lineto(xc+round(ms*x[3]),yc-round(ms*y[3]));
lineto(xc+round(ms*x[2]),yc-round(ms*y[2]));
lineto(xc+round(ms*x[4]),yc-round(ms*y[4]));
lineto(xc+round(ms*x[1]),yc-round(ms*y[1]));

пытаюсь свою фигуру нарисовать, меняю координаты, а получается ересь какая-то



0



3051 / 1670 / 657

Регистрация: 19.03.2019

Сообщений: 5,378

26.04.2022, 10:10

duck_nukem, ms — это масштаб отображения.
а работает это так.
moveto перемещает позицию на точку с координатами X,Y
X = Xцентр + масштаб*X1
Y = Yцентр + масштаб*Y1

потом эту точку соединяем линией с вершиной 3 (с учётом масштаба ms)

потом из полученной точки проводим линию в вершину 2 (с учётом масштаба ms)

и т.д.



1



3 / 3 / 0

Регистрация: 23.08.2021

Сообщений: 71

27.04.2022, 05:40

mr-Crocodile, да, разобрался с этим куском, спасибо за подсказку



0



Модератор: Модераторы

не найдены модули windows, shellapi

при преобразировани проекта делфи в лазарь ругается на отсутствие библиотек windows, shellapi

ларарь 0.9.24\дебиан 4.0р0

a16
незнакомец
 
Сообщения: 5
Зарегистрирован: 08.05.2008 10:31:59

Re: не найдены модули windows, shellapi

Vadim » 08.05.2008 12:49:17

a16
Модуль windows будет работать только в Windows, ShellApi, соответственно, тоже.
Так что даже если Вы проявите невиданное упорство и настойчивость и перенесете эти модли из версии FPC для Windows, Вас постигнет жестокое рназочарование…

Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: не найдены модули windows, shellapi

alexs » 08.05.2008 14:02:52

a16
Проверь пути в настройках компилятора
Эти модули есть.
Но если планируеш делать кросплатформунено решение — то лучше от них отказаться.


alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
  • Профиль
  • Сайт
  • ICQ

Re: не найдены модули windows, shellapi

FedeX » 08.05.2008 14:42:41

Я так понимаю, требуеться кросскомпиляция под Линухом в Вин. Тогда проще всего установить специальный пакет для кросскомпиляции, там все эти модули уже скомпилированы, ничего больше настраивать не прийдёться. Для дебиана я такой пакет точно ставил, де-то на сорцефорже.нет он лежал…


FedeX
постоялец
 
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир
  • Профиль
  • ICQ

Re: не найдены модули windows, shellapi

Brainenjii » 08.05.2008 15:34:30

FedeX — и работало? Т.е. форму с компонентами из линукса можно было скомпилировать для Windows?


Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: не найдены модули windows, shellapi

wavebvg » 08.05.2008 19:15:07

Brainenjii писал(а):форму с компонентами из линукса можно было скомпилировать для Windows?

Что-то не замечал с этим проблем, а вот с темой обсуждения — знаком не по наслышке и проблемы остаются, кто-нить выдел мануал по установке этих модулей — у меня вполне конкретные интересы, связанные даже не с кросс платформой, а некоторыми функциями WIN, не реализованными в LAZARUS LINUX…

wavebvg
постоялец
 
Сообщения: 355
Зарегистрирован: 28.02.2008 04:57:35

Re: не найдены модули windows, shellapi

FedeX » 08.05.2008 23:42:31

Да, конечно, форму без проблем. Кажется и с проектом, который явно использовал модуль Windows проблем тоже не было. Максимум что могло быть и про что я мог забыть так это возможно мне понадобилось найти этот модуль и прописать к нему путь.


FedeX
постоялец
 
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир
  • Профиль
  • ICQ

Re: не найдены модули windows, shellapi

a16 » 12.05.2008 10:41:10

FedeX писал(а):Я так понимаю, требуеться кросскомпиляция под Линухом в Вин. Тогда проще всего установить специальный пакет для кросскомпиляции, там все эти модули уже скомпилированы, ничего больше настраивать не прийдёться. Для дебиана я такой пакет точно ставил, де-то на сорцефорже.нет он лежал…

Есть готовый проэкт нписаный на дельфи под винду. его теперь понадобилось перенести в дебиан. с этим разобрался… теперь ругается на TControlBar и TstatcText.

a16
незнакомец
 
Сообщения: 5
Зарегистрирован: 08.05.2008 10:31:59

Re: не найдены модули windows, shellapi

alexs » 12.05.2008 11:40:34

a16 писал(а):TControlBar

Этого пока нет.

a16 писал(а):TstatcText

Это есть. Кажется не по всем свойствам совпадает с тем, что в дельфи.


alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
  • Профиль
  • Сайт
  • ICQ

Re: не найдены модули windows, shellapi

a16 » 12.05.2008 15:33:22

отключил TControlBar, с TStaticText разобрался теперь компиляция проходит но вылетает отладка. при запуске скомпилированого проэкта ругается «Access volation»
При отладке:
1.Ошибка отдадчика
2.Project PorGeT raised exception class ‘External: SGSEGV’
3. Project PorGeT raised exception class ‘RunError(216)’

Добавлено спустя 2 минуты 43 секунды:
останов здесь:

Код: Выделить всё
for i:=1 to 105 do
  PointName.items.Add(GetNumName(i));

объявление

Код: Выделить всё
PointName: TComboBox
a16
незнакомец
 
Сообщения: 5
Зарегистрирован: 08.05.2008 10:31:59

Re: не найдены модули windows, shellapi

alexs » 12.05.2008 16:43:16

a16 писал(а):PointName

А его ты точно создаёш? или он точно уже существует в данный момент?
проверку вставь —

Код: Выделить всё
if not Assigned(PointName) then
  ShowMessage('Обломались. Компоненты нет!')
else 
for i:=1 to 105 do
  PointName.items.Add(GetNumName(i));

alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
  • Профиль
  • Сайт
  • ICQ

Re: не найдены модули windows, shellapi

a16 » 12.05.2008 17:19:10

таки нет компоненты… ковыряю что эт такое…

Добавлено спустя 51 минуту 50 секунд:
помогите разобратся почему нет компонета

Код: Выделить всё
type
  TMainForm = class(TForm)   
   ...
    PointName: TComboBox;
    Kof: TComboBox;
   ...
   end;

var
  MainForm: TMainForm;

Код: Выделить всё
procedure TMainForm.FormCreate(Sender: TObject);
var
CurrentTime:LongWord;
i,j,UndoI:integer;
IniFile:File of integer;
begin
if not Assigned(PointName) then  ShowMessage('Обломались. Компоненты нет! PointName')
else
for i:=1 to 105 do
  PointName.items.Add(GetNumName(i));

if not Assigned(Kof) then  ShowMessage('Обломались. Компоненты нет! Kof')
else
for i:=10 DownTo 1 do
  Kof.items.Add(IntToStr(i*50));
Kof.items.Add('30');

a16
незнакомец
 
Сообщения: 5
Зарегистрирован: 08.05.2008 10:31:59

Re: не найдены модули windows, shellapi

alexs » 12.05.2008 19:24:48

А у тебя по ходу дела нигде эата переменная не перекрывается? или может где-то обнуляется?
попробуй — измени её имя для начала.


alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
  • Профиль
  • Сайт
  • ICQ

Re: не найдены модули windows, shellapi

a16 » 13.05.2008 15:55:30

немного разобрался. в проэкте 4 формы, 3 с них запускаются нормально(вроде:AboutBox Settings и ViewForm). Ошибки возникают при автосоздании формы MainForm
1.Project raised exception class ‘External: SIGFPE’
2.Project raised exception class ‘RunError(207)’

Добавлено спустя 1 час 47 минут 12 секунд:
и чем можно заменить TControlBar

a16
незнакомец
 
Сообщения: 5
Зарегистрирован: 08.05.2008 10:31:59

Re: не найдены модули windows, shellapi

alexs » 13.05.2008 21:43:37

Скорее всего при инициализации формы пытаешся гдето обратитья к неинициализированной переменной (может ссылка на эту форму где то есть? или ещё что?)

a16 писал(а):и чем можно заменить TControlBar

А нафиг он вобще нужен? Настраивамый инетрфейс конечным пользователем — это не самая умная мысль.


alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
  • Профиль
  • Сайт
  • ICQ


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

Модуль windows не найден: решение проблемы на языке Pascal ABC

На чтение5 мин

Опубликовано

Обновлено

При разработке программ на языке Pascal ABC иногда может возникнуть ошибка «Модуль windows не найден». Эта ошибка происходит, когда компилятор не может найти указанный модуль Windows для работы с операционной системой. В результате программу невозможно скомпилировать и запустить.

Модуль Windows – это стандартный модуль Pascal ABC, предназначенный для работы с функциями и процедурами операционной системы Windows. Он содержит набор важных функций и типов данных, которые позволяют взаимодействовать с окнами, диалоговыми окнами, файлами, реестром и другими элементами операционной системы.

Чтобы исправить ошибку «Модуль windows не найден», вам необходимо убедиться, что модуль Windows находится по указанному пути или, в случае его отсутствия, установить его. Также возможно, что путь к модулю windows не прописан в настройках компилятора. В этом случае необходимо добавить путь к модулю windows в списке подключаемых модулей компилятора.

Итак, если вам приходится сталкиваться с ошибкой «Модуль windows не найден» при разработке программ на языке Pascal ABC, важно помнить, что причиной ошибки может быть отсутствие модуля Windows, неправильно прописанный путь к модулю или его отсутствие в настройках компилятора. Следуя данным рекомендациям, вы сможете успешно решить данную проблему и продолжить работу над своими проектами на языке Pascal ABC.

Ошибка «Модуль windows не найден»

Ошибка «Модуль windows не найден» возникает при компиляции программ на языке Pascal ABC, когда отсутствует подключение необходимого модуля windows. Это может произойти, если в программе используются функции или процедуры, требующие работу с операционной системой Windows, а модуль windows не был подключен.

Для решения этой проблемы необходимо добавить ссылку на модуль windows в программу. Это можно сделать с помощью директивы uses. Ниже приведен пример кода:

useswindows;// Здесь идет описание программыbegin// Здесь идет код программыend.

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

В случае, если ошибка «Модуль windows не найден» возникает несмотря на наличие ссылки на модуль windows и его наличие на компьютере, необходимо проверить правильность установки и настройки среды программирования Pascal ABC. Возможно, требуется повторная установка или обновление среды.

Также, проблема может возникать из-за некорректного пути к модулю windows. В этом случае, проверьте, что путь указан правильно и соответствует расположению модуля на вашем компьютере.

Итак, ошибка «Модуль windows не найден» возникает при отсутствии подключения модуля windows в программе на языке Pascal ABC. Для ее решения необходимо добавить ссылку на модуль windows с помощью директивы uses. Если ошибка продолжает возникать, проверьте наличие модуля windows на компьютере и корректность настроек среды программирования.

Решение проблемы на языке Pascal ABC

Если при компиляции программы на языке Pascal ABC вы получили сообщение об ошибке «Модуль windows не найден», то скорее всего у вас отсутствует необходимая библиотека. Данная проблема может возникать, например, при попытке использования функций работы с окнами (например, функций из модуля WinAPI).

Для решения этой проблемы вам нужно правильно настроить среду разработки Pascal ABC и добавить необходимые модули в проект.

Шаг 1: Проверка наличия необходимых модулей

Убедитесь, что у вас установлена последняя версия Pascal ABC и все необходимые модули присутствуют в каталоге с программой. В случае отсутствия модуля windows, который отвечает за работу с окнами, вам потребуется установить его отдельно.

Шаг 2: Настройка среды разработки

Откройте Pascal ABC и выберите пункт «Настройки» в меню «Сервис». В появившемся окне перейдите на вкладку «Компилятор» и убедитесь, что в поле «Дополнительные параметры» указан путь к модулю windows (обычно это путь к файлу WindowsAPI.pas). Если поле пустое или указан неправильный путь, введите правильный путь вручную или нажмите кнопку «Обзор» и найдите файл модуля.

Шаг 3: Добавление модуля в проект

Откройте свой проект в Pascal ABC и добавьте модуль windows в раздел «Используемые модули» (обычно в самом начале программы). Например:

program Программа;
uses Windows;
begin
// Ваш код здесь
end.

Сохраните и скомпилируйте свой проект. Теперь программа должна успешно выполняться без ошибки «Модуль windows не найден».

Заключение

Если вы проделали все указанные выше шаги, но проблема не исчезла, возможно, проблема связана с самой средой разработки или компилятором. В этом случае рекомендуется обратиться за помощью к разработчикам Pascal ABC или использовать другой язык программирования.

Проблема возникает из-за отсутствия модуля Windows

Эта проблема может возникнуть по разным причинам. Одной из причин может быть отсутствие файла модуля windows в вашей системе. В таком случае рекомендуется проверить наличие данного модуля в папке с установленным Pascal ABC и, если его там нет, попробовать переустановить Pascal ABC.

Если модуль windows присутствует в папке с установленным Pascal ABC, проблема может быть связана с неправильными настройками пути к модулю windows. В таком случае вам необходимо проверить и настроить путь к модулю windows в настройках вашей среды разработки Pascal ABC.

Также возможна ситуация, когда ваша операционная система не поддерживает определенные функции, которые использует модуль windows в программе на Pascal ABC. В таком случае вам может потребоваться обновить операционную систему или установить необходимые обновления и пакеты для поддержки этих функций.

В целом, проблема с отсутствием модуля windows является достаточно распространенной, но обычно ее можно решить сравнительно легко, проверив и настроив путь к модулю windows или установив недостающий модуль. Если же проблема не устраняется, рекомендуется обратиться за помощью к специалистам или сообществу разработчиков Pascal ABC, которые смогут помочь вам в решении данной проблемы.

Использование библиотеки для решения проблемы

Для решения проблемы с отсутствием модуля windows в Pascal ABC, можно использовать встроенную библиотеку Windows. Эта библиотека предоставляет набор функций и процедур, которые позволяют взаимодействовать с операционной системой Windows.

Прежде чем использовать функции и процедуры из библиотеки Windows, необходимо подключить ее к программе. Для этого нужно ввести следующую конструкцию:

uses Windows;

После подключения библиотеки, вы сможете использовать ее функции и процедуры для решения проблемы с отсутствием модуля windows. Например, можно использовать функцию MessageBox для вывода сообщений пользователю. Пример использования функции выглядит следующим образом:

uses Windows; begin MessageBox(0, 'Привет, мир!', 'Сообщение', MB_OK); end.

В данном примере, функция MessageBox принимает несколько параметров, включая текст сообщения и заголовок окна. Функция выводит окно сообщения с заданным текстом и заголовком.

Таким образом, используя библиотеку Windows, вы сможете решить проблему с отсутствием модуля windows и воспользоваться ее функциями и процедурами для взаимодействия с операционной системой.

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Буквально на днях разработчики Lazarus сообщили о том, что мы все-таки доживем до момента, когда версия Lazarus 1.0 выйдет в свет. Судя по всему – это событие состоится через месяц-полтора. А пока, в доступе есть версии 0.9.28 — 0.9.29. И, думаю, что практически каждый, кто впервые сталкивался с IDE Lazarus и устанавливал его, например, под Windows так же сталкивался хоть и с мелкими, но достаточно неприятными моментами в работе, например, отладчик с чего-то начинал “портачить” и проскакивать мимо точек останова или Lazarus с чего-то при пересборке переставал находить исходники с FPC. В принципе большинство из таких проблем решаются достаточно быстро, но все-таки подведем небольшой итог по решению микро-проблем в Lazarus 0.9.xx.

И самая первая проблема с которой я столкнулся была под Windows. Проблема заключалась как раз в работе отладчика – точнее в отсутствии работы как таковой. Отладчик просто никак не реагировал на мои просьбы и мольбы о помощи. Решений может быть несколько:

1. Проверить настройки компилятора FPC, которые представлены на рисунке:

2. Проверить путь к отладчику. Маловероятно, но может быть проблема в этом:

3. Найти более свежую версию gdb.exe. Сам этим советом не пользовался, т.к. моя проблема решилась по п.1., но встречал высказывания на форумах, что такое действие может помочь.

Следующая проблема – Lazarus не видит исходный код FPC и в результате этого ругается по чём зря. Например, мне Lazarus выдавал ошибку о том, что модуль Dialogs.pas не найден, у других – ругался на другие модули.  Обычно такая проблема может возникнуть в случае, если Вы обновляли IDE и при этом обновляли не правильно, например, не удалили предыдущую версию. В этом случае достаточно зайти в настройки Lazarus’a и указать правильные пути к fpc.exe, make.exe и директории source с исходниками той версии Free Pascal которая Вам необходима. Например, на рисунке ниже показаны настройки Lazarus для работы с FPC 2.4.3:

Логическим продолжением той проблемы может быть следующая – пути в настройках указаны верно, но Lazarus всё равно упорно продолжает ругаться на то, что не может найти какие-либо модули.

Шагом для решения этой проблемы может быть следующее действие: заходите в директорию:

[path_to_lazarus]\fpc\x.x.x\bin\i386-win32\

Это в том случае, если вы используете FPC, поставляемый вместе с Лазарем для Windows, открываете файл fpc.cfg и внимательнейшим образом просматриваете все пути к файлам. Они обязательно должны соответсвовать той версии Free Pascal, которую вы используете. Если  же Вам лень копаться в файле, можно сделать по другому – удаляете и выполняете в командной строке следующую команду:

fpcmkcfg.exe -d basepath=C:\lazarus\fpc\x.x.x\bin\i386-win32 -o fpc.cfg

То есть создаете новый файл конфигурации для FPC. Утилита fpcmkcfg.exe находится в той же директории bin, что и файл конфигурации.

В 99% случаев, если правильно выставлены настройки IDE и сформирован верный fpc.cfg проблема решается и Lazarus, работает шустро и всё просто супер, НО остается 1% случаев, когда и такие действия не помогают(!).

Проблема может сохраниться в том случае, если Вы используете версию Lazarus 0.9.29. С такой ситуацией я столкнулся сегодня, когда решил обновить своего Лазаря. Причём ситуация довольно интересная: пустое приложение компилируется, exe-шник запускается, компоненты на форму укладываются, но как только пробуешь создать какое-нибудь событие у любого компонента Lazarus ругается на отсутствие модуля. При этом обычно указывает на последний либо предпоследний модуль в списке uses.

Оказывается решение проблемы опять же кроется в путях, а именно – в их написании. Вот так выглядит путь к исходникам, выставленный по умолчанию при установке Лазаруса:

lazarus4

Вроде бы всё верно, а ошибка есть. Теперь попробуйте изменить букву диска с “с” на “С” и сохранить настройки – ничего не выйдет и ошибка так и останется :). Не знаю почему и с чем это связано, но именно из-за этой вот маленькой буковки и возникает непонятная проблема с поиском исходников.

Чтобы изменить написание пути идем (в Windows XP) в директорию:

C:\Documents and Settings\[User_name]\Local Settings\Application Data\lazarus\

открываем в обычном блокноте файл environmentoptions.xml ищем в нем “неправильный” путь к source и изменяем первый первый символ. Мне после такого “наглого” вмешательства в настройки IDE даже не пришлось ничего перезапускать – все заработало как швейцарские часы.

Вот пожалуй те мелкие, но довольно неприятные недочёты в Lazarus, которые портят нервы новым пользователям. Естественно такие проблемы обнаруживаются максимально быстро и так же быстро решаются. Так что будем надеяться, что версия Lazarus 1.0. будет избавлена от них и будет работать намного лучше и быстрее. Ксти, может и компилятор обновят до 2.5., но это только мои предположения и ничего более.

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Модуль windows не найден pascal abc: проблема и ее решение

Если вы столкнулись с ошибкой «Модуль windows не найден» при использовании пакета Pascal ABC, то вы не одиноки. Эта ошибка может возникнуть, когда вы пытаетесь запустить программу, которая использует модуль, связанный с Windows, из которого необходимые файлы отсутствуют.

Что такое пакет Pascal ABC?

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

Однако, помимо простоты использования, в Pascal ABC также есть некоторые проблемы, которые иногда могут вызвать ошибки в работе программы. Одна из таких ошибок — это «Модуль windows не найден».

Почему возникает ошибка «Модуль windows не найден»?

Ошибка «Модуль windows не найден» возникает, когда программа пытается запустить модуль, который связан с операционной системой Windows, но этот модуль не может быть найден.

Это может произойти по нескольким причинам:

  • Отсутствие необходимых файлов в системе Windows, связанных с модулем, который должен быть запущен;
  • Неверная установка Pascal ABC или компилятора;
  • Программа запускается на 64-битной системе, а модуль был разработан для 32-битной системы.

Как решить ошибку «Модуль windows не найден»?

Существует несколько способов решения ошибки «Модуль windows не найден» при использовании Pascal ABC. Вот некоторые из них:

  1. Переустановите Pascal ABC. Если у вас проблемы с установкой Pascal ABC, то установка может быть повреждена или не полностью завершена. Попробуйте переустановить Pascal ABC.
  2. Установите необходимые файлы. Если у вас отсутствуют необходимые файлы для запуска модуля, связанного с Windows, попробуйте найти их и установить. Это может помочь избавиться от ошибки «Модуль windows не найден».
  3. Убедитесь, что используете правильную версию Pascal ABC и компилятора. Если вы используете 64-битную систему, убедитесь, что вы используете 64-битную версию Pascal ABC и компилятора. Если вы используете 32-битную систему, убедитесь, что вы используете 32-битную версию Pascal ABC и компилятора. Это может помочь в избавлении от ошибки «Модуль windows не найден».

Вывод

Ошибка «Модуль windows не найден» при использовании Pascal ABC может быть вызвана несколькими причинами. В этой статье мы рассмотрели некоторые из них и предложили несколько способов решения этой проблемы.

Если вы все еще сталкиваетесь с этой ошибкой, попробуйте использовать наши рекомендации. Если это не помогло, обратитесь за помощью у разработчика Pascal ABC или в Интернет-коммьюнити, где вы можете получить помощь от других разработчиков и пользователей.

Модуль windows не найден pascal abc

В программировании существует множество ошибок, которые могут возникнуть при запуске программы. Одной из таких ошибок является «Модуль windows не найден pascal abc».

Причины ошибки «Модуль windows не найден pascal abc»

Ошибка «Модуль windows не найден pascal abc» возникает из-за того, что компьютер не может найти определенный файл DLL, который нужен для запуска программы.

Возможны несколько причин, почему файл DLL не был найден:

  • Файл DLL был удален
  • Файл DLL был поврежден вирусом или другим вредоносным программным обеспечением
  • Файл DLL был перемещен в другую папку или диск
  • Конфликт версий файлов DLL
  • Проблемы с реестром Windows

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

Как исправить ошибку «Модуль windows не найден pascal abc»

Для исправления ошибки «Модуль windows не найден pascal abc» необходимо определить причину ошибки и принять соответствующие меры.

Восстановите файл DLL

Если файл DLL был удален или поврежден, необходимо восстановить его. Для этого можно воспользоваться специальными программами по восстановлению файлов или загрузить файл DLL из Интернета (при этом следует убедиться в его безопасности).

Проверьте конфликт версий файлов DLL

Если причиной ошибки является конфликт версий файлов DLL, помочь может утилита sfc /scannow. Эта программа проверяет целостность системных файлов и восстанавливает их, если они были повреждены.

Измените регистрационные значения

Если проблема заключается в проблемах с реестром Windows, нужно удостовериться, что регистрационные значения для файла DLL находятся в нужном месте и указаны правильно.

Проверьте код программы

Если все вышеперечисленные действия не привели к успеху, следует проверить код программы. Возможно, программа запрашивает файл DLL, который был перемещен в другое место. Проверьте путь и имя файла в коде программы, чтобы убедиться, что они указаны правильно.

Итог

Ошибка «Модуль windows не найден pascal abc» может возникнуть по множеству причин, однако ее можно легко исправить, проведя небольшую диагностику, включающую проверку целостности файлов, кода программы и регистрационных значений в реестре Windows.

Ошибка «Модуль windows не найден pascal abc»: причины и решение

При работе в среде Pascal ABC иногда может появляться ошибка «Модуль windows не найден». Она свидетельствует о том, что компилятор не может найти необходимую для работы на Windows библиотеку. Чтобы избежать этой проблемы, необходимо следовать определенным правилам.

Причины появления ошибки

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

Также могут возникнуть ошибки, связанные с несовместимостью версий библиотеки и компилятора, неверными настройками среды разработки или особенностями работы операционной системы.

Как решить проблему

Для того, чтобы решить проблему с отсутствующим модулем windows в Pascal ABC, необходимо выполнить несколько действий:

  • Убедиться, что вы используете правильную версию библиотеки. Модуль windows должен соответствовать версии компилятора.
  • Указать правильный путь к библиотеке. Путь должен быть указан в настройках среды разработки.
  • Проверить, установлена ли нужная библиотека на вашем компьютере. Если ее нет, ее необходимо установить.

Чтобы установить модуль windows на компьютер, нужно скачать пакет Microsoft Windows SDK для Windows 7 и .NET Framework 4 и установить его на компьютер.

Важно помнить, что в Pascal ABC библиотека должна быть указана в пути к компилятору с помощью ключа /I.

Например, если библиотека находится в папке C:\Windows\System32, нужно указать ключ /I»C:\Windows\System32″ при компиляции программы.

Резюме

Ошибка «Модуль windows не найден» в Pascal ABC может возникать по разным причинам: от неверно указанного пути к библиотеке до ее отсутствия на компьютере. Чтобы решить проблему, необходимо следовать определенным правилам: убедиться в правильной версии библиотеки, указать правильный путь к ней и установить ее на компьютер. Также нужно помнить, что библиотека должна быть указана в пути к компилятору с помощью ключа /I.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Почему выдает ошибку windows не удается получить доступ к указанному устройству
  • Running source2 tools requires windows 10
  • Windows server 2003 r2 build
  • Автоподключение интернета pppoe windows 10
  • Pre installed windows games