Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/88: Рейтинг темы: голосов - 88, средняя оценка - 4.77
2 / 2 / 0
Регистрация: 15.10.2012
Сообщений: 17

Конфликт модулей crt и GraphABC

12.06.2013, 15:36. Показов 16386. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
Пишу небольшую программку с использованием графического модуля. Понадобилось использовать функцию delay(), поэтому также подключил модуль crt. В итоге, программа не запускается. Удаляю модуль crt и всё работает.
Можно ли исправить? Если да, то как?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.06.2013, 15:36
Ответы с готовыми решениями:

Два окна uses crt и graphABC
При применении двух модулей crt и graphABC, после компиляции программы, появляются два окна. Можно ли их объединить? uses crt,...

Переход между модулями graphabc и crt
Есть программа для подсчета определенного интеграла, в которой ввод данных осуществляется с помощью консольного меню. Нужно дополнить её...

Как совместить окна CRT и GraphABC?
Здравствуйте. Я пишу плеер. У меня есть проблема с кодом который я написал в Pascal ABC и переношу в Pascal ABC.NET. (Pascal ABC.Net далее...

18
Почетный модератор
 Аватар для КонецСвета
7966 / 3937 / 2464
Регистрация: 30.10.2011
Сообщений: 5,377
12.06.2013, 16:09
Destiner, вы помните, что программы с использованием crt надо запускать, используя Shift+F9?
потому что вот программка с crt и delay у меня работает )
Pascal
1
2
3
4
5
6
7
8
uses crt,graphABC;
begin
repeat
setpencolor(clrandom);
rectangle(100,100,200,200);
delay(100);
until keypressed;
end.
2) не подойдет использовать sleep вместо delay?
0
 Аватар для BaboshinSD
349 / 288 / 49
Регистрация: 15.11.2012
Сообщений: 477
Записей в блоге: 1
12.06.2013, 16:13
Цитата Сообщение от Destiner Посмотреть сообщение
Можно ли исправить?
Цитата Сообщение от Destiner Посмотреть сообщение
Удаляю модуль crt и всё работает.
Сам спросил - сам ответил.

Добавлено через 2 минуты
Если всё таки без Crt что-то не работает, то перепишите код без Crt или скиньте код.
0
2 / 2 / 0
Регистрация: 15.10.2012
Сообщений: 17
16.06.2013, 00:29  [ТС]
Цитата Сообщение от КонецСвета Посмотреть сообщение
Destiner, вы помните, что программы с использованием crt надо запускать, используя Shift+F9?
потому что вот программка с crt и delay у меня работает )
Pascal
1
2
3
4
5
6
7
8
uses crt,graphABC;
begin
repeat
setpencolor(clrandom);
rectangle(100,100,200,200);
delay(100);
until keypressed;
end.
2) не подойдет использовать sleep вместо delay?
Так. Знаю, что надо запускать через Shift+F9, об этом даже сам компилятор пишет.
Ваша программа у меня тоже работает, а вот моя — нет. Точнее она выполняется, и через 5-10 секунд завершается, при этом ни окна GraphABC, ни консоли программа не открывает.
Sleep подходит. Он чем-то отличается от Delay? Я о нём даже и не знал, везде delay используют.

Цитата Сообщение от BaboshinSD Посмотреть сообщение
Сам спросил - сам ответил.

Добавлено через 2 минуты
Если всё таки без Crt что-то не работает, то перепишите код без Crt или скиньте код.
Я же не просто так crt добавлял, он мне нужен был для delay. Ну, теперь уже не важно.
Но вообще, интересно, конечно, почему не работает. Учитывая, что программа выше работает, дело, видимо, в моих косяках. Надо будет подумать, хотя идей нет.
0
Почетный модератор
 Аватар для КонецСвета
7966 / 3937 / 2464
Регистрация: 30.10.2011
Сообщений: 5,377
16.06.2013, 00:40
Destiner, нну, если можете код выложить (хотя бы часть) то и мы охотно поломаем голову )
sleep - процедура из общих; Делает паузу на ms миллисекунд
delay - процедура модуля crt; Осуществляет задержку на ms миллисекунд.
"везде" delay (это турбо и free паскаль), "везде" sleep (это pascalABC и pascalABC.NET)
1
 Аватар для BaboshinSD
349 / 288 / 49
Регистрация: 15.11.2012
Сообщений: 477
Записей в блоге: 1
16.06.2013, 09:18
Цитата Сообщение от КонецСвета Посмотреть сообщение
и мы охотно поломаем голову )

Цитата Сообщение от КонецСвета Посмотреть сообщение
sleep - процедура из общих
Точнее из System.pas, так что использовать её предпочтительнее.
2
2 / 2 / 0
Регистрация: 15.10.2012
Сообщений: 17
16.06.2013, 11:06  [ТС]
Вот полный код, который у меня компилируется без проблем. Вообще, по-моему мнению, его очень трудно понять, ну если что, могу ответить на вопросы. Некоторые строчки прокомментировал.

Вообще, я делал симулятор вот этого.

Программа требует 2 текстовых файла. Я их прикрепил. Их можно изменять, тоже всё работает.
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
uses GraphABC;
 
type
  field = array[1..600,1..350] of boolean;
  
var
  i,stages:integer;
  xCells,yCells,cellSize:integer;
  config:text;
  presets_answer,torus_answer:string[5];
  torus_run:boolean;  
  oldStage,newStage:field;
  
procedure settingsScan;
begin
  assign(config,'Settings.txt');
  reset(config); readln(config);
  readln(config,xCells); readln(config);
  readln(config,yCells); readln(config);
  readln(config,Cellsize); readln(config);
  readln(config,stages); readln(config);
  readln(config,presets_answer); readln(config);
  readln(config,torus_answer); close(config);
end;
 
procedure Grid;
var
  i:integer;
begin
  For i:=1 to xCells+1 do
  begin
    Line((cellSize+1)*(i-1)+1,1,(cellSize+1)*(i-1)+1,(cellSize+1)*yCells+1)
  end;
    For i:=1 to yCells+1 do
  begin
    Line(1,(cellSize+1)*(i-1)+1,(cellSize+1)*xCells+1,(cellSize+1)*(i-1)+1)
  end;
end;
 
procedure addLife(x,y:integer);
begin
  setbrushcolor(clBlack);
  rectangle((cellSize+1)*(x-1)+1,(cellSize+1)*(y-1)+1,(cellSize+1)*x+2,(cellSize+1)*y+2);
  setbrushcolor(clWhite);
  oldStage[x,y]:=true;
end;
 
procedure removeLife(x,y:integer);
begin
  rectangle((cellSize+1)*(x-1)+1,(cellSize+1)*(y-1)+1,(cellSize+1)*x+2,(cellSize+1)*y+2);
end;
 
function LifeCheck(x,y:integer):boolean;
begin
  If GetPixel((cellSize+1)*(x-1)+2,(cellSize+1)*(y-1)+2)=rgb(255,255,255)
  then LifeCheck:=false
  else LifeCheck:=true;
end;
 
function torus (x,maxCells:integer;torus_run:boolean):integer;
begin
  torus:=x;
  If x<1
  then torus:=maxCells;
  If x>maxCells
  then torus:=1;
  If torus_run=false
  then torus:=x;
end;
 
function LifeCount(x,y:integer;torus_run:boolean):integer;
var
  Counter:integer;
begin
  If oldStage[torus(x-1,xCells,torus_run),y]=true
  then Inc(counter);
  If oldStage[torus(x+1,xCells,torus_run),y]=true
  then Inc(counter);
  If oldStage[x,torus(y-1,yCells,torus_run)]=true
  then Inc(counter);
  If oldStage[x,torus(y+1,yCells,torus_run)]=true
  then Inc(counter);
  If oldStage[torus(x-1,xCells,torus_run),torus(y-1,yCells,torus_run)]=true
  then Inc(counter);
  If oldStage[torus(x+1,xCells,torus_run),torus(y+1,yCells,torus_run)]=true
  then Inc(counter);
  If oldStage[torus(x+1,xCells,torus_run),torus(y-1,yCells,torus_run)]=true
  then Inc(counter);
  If oldStage[torus(x-1,xCells,torus_run),torus(y+1,yCells,torus_run)]=true
  then Inc(counter);
  LifeCount:=counter;
end;
 
procedure StartPosition;
var
  i,j:integer;
  life:integer;
  preset:text;
begin
  assign(preset,'preset.txt');
  reset(preset);
  For i:=1 to xCells do
  begin
    For j:=1 to xCells do
    begin
      read(preset,life);
      If life=1
      then 
      begin
        addLife(j,i);
        oldStage[j,i]:=true;
      end
      else oldStage[j,i]:=false;
    end;
    readln(preset);
  end;
  close(preset);
end;
 
procedure Life; 
var
  i,j:integer;
begin
  For i:=1 to xCells do
  begin
    For j:=1 to yCells do
    begin
      If oldStage[i,j]=false
      then    //если изначально жизни не было
      begin
        If lifeCount(i,j,torus_run)=3
        then newStage[i,j]:=true
        else newStage[i,j]:=false;
      end  
      else    //если изначально жизнь была
      begin
        If (lifeCount(i,j,torus_run)=2) 
        or (lifeCount(i,j,torus_run)=3)
        then newStage[i,j]:=true
        else newStage[i,j]:=false;
      end;
    end;
  end;
  For i:=1 to xCells do
  begin
    For j:=1 to yCells do
    begin
      If oldStage[i,j]=false
      then 
      begin
        If newStage[i,j]=true
        then addLife(i,j);
      end
      else
      begin
        If newStage[i,j]=false
        then removeLife(i,j);
      end;
    end;
  end;
  oldStage:=newStage; //Перед началом нового шага записываем новые результаты в старые
end;
 
begin
  settingsScan; //Считываем настройки из файла
  Grid; //Рисуем сетку n на m
  
  If presets_answer='yes'
  then StartPosition; //Расставляем начальные клетки
  If torus_answer='yes' //Эмуляция поверхности тора
  then torus_run:=true
  else torus_run:=false;
  
  For i:=1 to stages do Life;
end.
Вложения
Тип файла: txt preset.txt (6.0 Кб, 42 просмотров)
Тип файла: txt Settings.txt (236 байт, 45 просмотров)
2
Почетный модератор
 Аватар для КонецСвета
7966 / 3937 / 2464
Регистрация: 30.10.2011
Сообщений: 5,377
16.06.2013, 11:16
Destiner, ваш проект у меня работает и с вариантом sleep и с вариантом delay
(у меня Pabc.NET версия 1.8 сборка 496)
0
2 / 2 / 0
Регистрация: 15.10.2012
Сообщений: 17
16.06.2013, 11:47  [ТС]
У меня была версия 1.8 сборка 500+ (не помню точнее). Поставил 2.1 (т.е. новейшую версию) программа ведёт себя так же.
Версия 1.8 (515) тоже ничего не изменила.
От администратора запускать не помогает.
Ну, раз проблема только с моей стороны, тут мало чем уже поможешь =)
Спасибо за помощь, буду пользоваться sleep()
0
Почетный модератор
 Аватар для КонецСвета
7966 / 3937 / 2464
Регистрация: 30.10.2011
Сообщений: 5,377
16.06.2013, 11:52
...не знаю, имеет ли это значение: у меня Windows XP...
в любом случае, удачи! спасибо за программу )
1
1 / 1 / 1
Регистрация: 31.05.2013
Сообщений: 40
16.06.2013, 12:07
Прикольная штука, но вот у меня она заканчивается в один прекрасный момент (всегда один и тот же)
0
2 / 2 / 0
Регистрация: 15.10.2012
Сообщений: 17
16.06.2013, 12:28  [ТС]
В settings можно изменить число шагов на любое натуральное число. Да и вообще там много чего изменить можно =)
0
1 / 1 / 1
Регистрация: 31.05.2013
Сообщений: 40
16.06.2013, 13:04
упс, не подумал)))

Добавлено через 2 минуты
круто))) а чтобы случайное заполнение было в начале, и задержка по-больше??? крутая заставочка получается)))

Добавлено через 8 минут
странно, изменяю пресет и прога останавливается раньше чем должна, а если убираю его, то вовсе все клетки пустые(((
0
2 / 2 / 0
Регистрация: 15.10.2012
Сообщений: 17
16.06.2013, 13:20  [ТС]
По поводу изменения пресета, там надо аккуратно. Вообще его менять не очень удобно, хочу сделать создание пресетов через GUI, чтобы он рисовал сетку, а ты тыкал на клеточки, где нужно добавить жизнь. И в конце всё это сохранять в txt, который уже будет использовать основная программа.
Ну, это позже.

Добавлено через 24 секунды
А вот версия по твоему запросу.
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
uses GraphABC;
 
type
  field = array[1..600,1..350] of boolean;
  
var
  i,stages:integer;
  xCells,yCells,cellSize:integer;
  time,delay:integer;
  k:real;
  config:text;
  presets_answer,torus_answer:string[5];
  torus_run:boolean;  
  oldStage,newStage:field;
  
procedure settingsScan;
begin
  assign(config,'Settings.txt');
  reset(config); readln(config);
  readln(config,xCells); readln(config);
  readln(config,yCells); readln(config);
  readln(config,Cellsize); readln(config);
  readln(config,stages); readln(config);
  readln(config,delay); readln(config);
  readln(config,k); readln(config);
  readln(config,presets_answer); readln(config);
  readln(config,torus_answer); close(config);
end;
 
procedure Grid;
var
  i:integer;
begin
  For i:=1 to xCells+1 do
  begin
    Line((cellSize+1)*(i-1)+1,1,(cellSize+1)*(i-1)+1,(cellSize+1)*yCells+1)
  end;
    For i:=1 to yCells+1 do
  begin
    Line(1,(cellSize+1)*(i-1)+1,(cellSize+1)*xCells+1,(cellSize+1)*(i-1)+1)
  end;
end;
 
procedure addLife(x,y:integer);
begin
  setbrushcolor(clBlack);
  rectangle((cellSize+1)*(x-1)+1,(cellSize+1)*(y-1)+1,(cellSize+1)*x+2,(cellSize+1)*y+2);
  setbrushcolor(clWhite);
  oldStage[x,y]:=true;
end;
 
procedure removeLife(x,y:integer);
begin
  rectangle((cellSize+1)*(x-1)+1,(cellSize+1)*(y-1)+1,(cellSize+1)*x+2,(cellSize+1)*y+2);
end;
 
function LifeCheck(x,y:integer):boolean;
begin
  If GetPixel((cellSize+1)*(x-1)+2,(cellSize+1)*(y-1)+2)=rgb(255,255,255)
  then LifeCheck:=false
  else LifeCheck:=true;
end;
 
function torus (x,maxCells:integer;torus_run:boolean):integer;
begin
  torus:=x;
  If x<1
  then torus:=maxCells;
  If x>maxCells
  then torus:=1;
  If torus_run=false
  then torus:=x;
end;
 
function LifeCount(x,y:integer;torus_run:boolean):integer;
var
  Counter:integer;
begin
  If oldStage[torus(x-1,xCells,torus_run),y]=true
  then Inc(counter);
  If oldStage[torus(x+1,xCells,torus_run),y]=true
  then Inc(counter);
  If oldStage[x,torus(y-1,yCells,torus_run)]=true
  then Inc(counter);
  If oldStage[x,torus(y+1,yCells,torus_run)]=true
  then Inc(counter);
  If oldStage[torus(x-1,xCells,torus_run),torus(y-1,yCells,torus_run)]=true
  then Inc(counter);
  If oldStage[torus(x+1,xCells,torus_run),torus(y+1,yCells,torus_run)]=true
  then Inc(counter);
  If oldStage[torus(x+1,xCells,torus_run),torus(y-1,yCells,torus_run)]=true
  then Inc(counter);
  If oldStage[torus(x-1,xCells,torus_run),torus(y+1,yCells,torus_run)]=true
  then Inc(counter);
  LifeCount:=counter;
end;
 
procedure StartPosition;
var
  i,j:integer;
  life:integer;
begin
  randomize;
 
  For i:=1 to xCells do
  begin
    For j:=1 to yCells do
    begin
      if random<k
      then addLife(i,j);
    end;
  end;
end;
 
procedure Life; 
var
  i,j:integer;
begin
  For i:=1 to xCells do
  begin
    For j:=1 to yCells do
    begin
      If oldStage[i,j]=false
      then    //если изначально жизни не было
      begin
        If lifeCount(i,j,torus_run)=3
        then newStage[i,j]:=true
        else newStage[i,j]:=false;
      end  
      else    //если изначально жизнь была
      begin
        If (lifeCount(i,j,torus_run)=2) 
        or (lifeCount(i,j,torus_run)=3)
        then newStage[i,j]:=true
        else newStage[i,j]:=false;
      end;
    end;
  end;
  For i:=1 to xCells do
  begin
    For j:=1 to yCells do
    begin
      If oldStage[i,j]=false
      then 
      begin
        If newStage[i,j]=true
        then addLife(i,j);
      end
      else
      begin
        If newStage[i,j]=false
        then removeLife(i,j);
      end;
    end;
  end;
  oldStage:=newStage;
end;
 
begin
  settingsScan;
  Grid;
  
  If presets_answer='yes'
  then StartPosition;
  If torus_answer='yes'
  then torus_run:=true
  else torus_run:=false;
  
  If stages = 0
  then 
  begin
    while true do
    begin
      time := milliseconds;
      Life;
      time := milliseconds - time;
      If delay>time
      then sleep(delay-time);
    end;
  end
  else
  begin
    For i:=1 to stages do 
    begin
      time := milliseconds;
      Life;
      time := milliseconds - time;
      If delay>time
      then sleep(delay-time);
    end;
  end;  
end.
0
2 / 2 / 0
Регистрация: 15.10.2012
Сообщений: 17
16.06.2013, 13:21  [ТС]
Тут нужен только файл settings. Он изменён, поэтому прилагаю к сообщению.

Вот тут с настройками аккуратно. В той версии у нас был только один глайдер, и даже если рисовать поле 650 на 300, тормозит не сильно. Тут на первых порах создаётся много живых клеток и пока большинство не умрёт (а большинство всегда умирает), будет некрасиво отрисовываться полинейно.

Я отрегулировал настройки, чтобы это торможение было минимальным, но коэффициент можно ставить и 0.8, например, тогда почти все клетки будут живыми. Поле тоже можно расширять, но именно расширение поля порождает лаги. Моя эмуляция пока слабо оптимизирована, т. к. никогда не запускал больше одного глайдера на поле.
Потом возможно сделаю что-нибудь с этим.
Вложения
Тип файла: txt Settings.txt (364 байт, 18 просмотров)
0
1 / 1 / 1
Регистрация: 31.05.2013
Сообщений: 40
16.06.2013, 13:27
Всё, разобрался (перечитал правила), написал StartPositionRandom и всё покатило + вставил sleep(100), сижу разглядываю))))
0
Почетный модератор
 Аватар для КонецСвета
7966 / 3937 / 2464
Регистрация: 30.10.2011
Сообщений: 5,377
16.06.2013, 13:31
Destiner, да, у меня тоже сразу же возникла мысль создать стартовую процедуру, в которой пользователь сам сможет поместить клетки на плоскость )
0
1 / 1 / 1
Регистрация: 31.05.2013
Сообщений: 40
16.06.2013, 13:35
И нужно тогда дописать условия окончания игры и желательно сразу с перезапуском)))) Чтобы она НИКОГДА не кончалась))))
0
2 / 2 / 0
Регистрация: 15.10.2012
Сообщений: 17
16.06.2013, 15:06  [ТС]
Да, но это довольно проблематично. Вы наверное уже заметили, что почти всегда остаётся несколько вращающихся фигурок 3 на 1. То есть, если просто написать
Pascal
1
if (oldStage = newStage) then startPosition
и останется хоть одна фигурка 3 на 1, этот оператор никогда не сработает.
Можно конечно сделать сравнение, например, с двумя предыдущими поколениями.
Но и это поможет не всегда. Во-первых, есть фигурки, у которых цикл повтора 8 (возможно есть и больше).
Во-вторых, ещё проще, если остался хоть один глайдер, он будет вечно двигаться по диагонали и там уже придётся записывать 50+ предыдущих поколений.

P. S. Я конечно, уже давно думал, что программу нужно как минимум останавливать, если поколения повторяются, но сделать это оказалось не так просто.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.06.2013, 15:06
Помогаю со студенческими работами здесь

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

Меню для готовой программы, как совместить CRT и GraphABC
Есть готовая программа, которая берет 20 рандомных точек, из этих двадцати выбирает три так, чтобы треугольник, образованный ими, имел...

Откомпилировать программу, где были использованы модули CRT и GraphABC
Дело в том, что надо откомпилировать программу, написанную на обычном PascalABC,где были использованы модули CRT и GraphABC. При...

Выход из программы через ESC в graphabc без модуля crt
В любой момент программа должна завершаться при нажатии ESC uses graphabc; var x,y,z,a,i:integer; procedure...

Не работает модуль crt в graphABC
Вот моя программа, она не дописанная. Когда я ее запускаю появляется два окошка. В одном &quot;прекращения Program1.exe&quot;. В другом...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru