Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Заблокирован

Чем событие Button Click отличается от события Button Click или крах компилятора ассемблерных оптимизаций

13.03.2023, 12:07. Показов 2611. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Это крах ассемблерной оптимизации в Lazarus - быть точнее крах компилятора, или что-то тут не так. Почему? Потому что нажатие на кнопку ничем не отличается от нажатия на кнопку. То есть всё переменные, всё-всё-всё что моё - объявлено у меня внутри
procedure TForm1.Button1Click(Sender: TObject);

Но увы - практика показала, что нажатие на кнопку в корне отличается от нажатия на кнопку, и причём - в коде причин этому - я не обнаружил никаких.

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

Добавил, и опишу как теперь это стало работать.
Делаете первый запуск программы, размер поля по умолчанию 10 на10, угол 15, обратите внимание на правый столбец, первые верхние ячейки
https://www.cyberforum.ru/blog... 1678659824

не закрывая программы измените размер поля на 20 на 20, вы уидите уползшие влево по таблице результаты работы, не закрывая программы измените размер таблицы снова 10 на 10, результаты снова уползут влево - вы это увидите обратив внимание на верхние ячейки правого столбца.

И всё это происходит при том что все переменные объявляются снова при каждом нажатии кнопки.
То есть становится совершенно очевидно, что даже если ошибка моя, то шансы её отловить при столь некорректной работе чего-то важного но явно не мной сделанного - нулевые.
Очень жаль.
И вот его вот эта реализация что работает с ошибкой, описанной в теме
Кликните здесь для просмотра всего текста
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
unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Grids, StdCtrls, Math;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    StringGrid1: TStringGrid;
    procedure Button1Click(Sender: TObject);
  private
 
  public
 
  end;
 
var
  Form1: TForm1;
 
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.Button1Click(Sender: TObject);/////////////////////////////////////////////////////////////////////////////////////////////
    procedure steps1;
  var
    Edge,altHead,altTail,logic,p:pointer;
    y,x, xf,yf, TracerX, TracerY, steps, stepsInString, stepRare, stepFrequent, stepsBig, StringDivTrunc, StringFinish, StringStart,Punctir, Nechto:integer;
    px,py:^integer;
     Biger, countPix, Ostatok, CaTanDegP, RazmerX, xRazmerX, RazmerY,yRazmerY,bigStep, runTime,steps1:integer;
    CaTanDeg,TanDeg, TracerYDiv, deg:Extended;
    TracBool:boolean;
    //вторичный блок переменных
    StringDiv, StringDiv1:Extended;
    znak:integer;
    label p1,p2,p3,p4;
      label logic1,logic2,logic3,logic4;
            label Edge1, Edge2,Edge3,Edge4;
              label altHead1, altHead2, altHead3;
                label alttail1,altTail2;
          procedure Vstavka;
          begin
           //CaTanDegP:=round(CaTanDeg);
           //StringDiv:=RazmerX / (CaTanDeg);
           stepFrequent:=round(CaTanDeg);//кол-во пикселей в частом штрихе
           StringDiv:=frac(CaTanDeg);//выборка дробной части катангенса
           znak:=sign(0.5-StringDiv)*sign(StringDiv);//указывает на увеличение или уменьшение результата суммирования этой дробной части при повторе частых штрихов
           stepsBig:=round(1/StringDiv)+1;//!!!!!!!!увеличил на единицу только потому что в коде применяется только в таком виде
           stepRare:=stepFrequent+znak;//количество пикселей в редком штрихе. промежуточный, пока не нужен.
           bigStep:= stepsBig*stepFrequent;//поправил
           if bigStep=0 then begin
           bigStep:=stepRare;
           stepRare:=0;
 
           end;
           end;
          begin
      deg:= StrToInt(Edit1.Text);
      RazmerX:= StrToInt(Edit2.Text);
      RazmerY:= StrToInt(Edit3.Text);
      StringGrid1.RowCount:= RazmerY+2;  { Установка количества строк компонента StringGrid}
      StringGrid1.ColCount:= RazmerX+2;
         TanDeg := Tan(DegToRad(deg));
         {%REGION 'ttt'}
         if TanDeg = 0 then begin
           CaTanDeg:=RazmerX;
           CaTanDegP:=Trunc(CaTanDeg);
           px:=@x;
           py:=@y;
           StringFinish:=0;
           Ostatok:=0;
           Vstavka;
           end
         else begin
         CaTanDeg:= 1/TanDeg;
         if CaTanDeg>=TanDeg then begin
           px:=@x;
           py:=@y;
           Vstavka;
          if CaTanDegP>28 then CaTanDegP:=27;
           end
         else begin
           px:=@y;
           py:=@x;
           Vstavka;
           if CaTanDegP>28 then CaTanDegP:=27;
            end;
                  end;
         if CaTanDegP=0 then begin
           StringFinish:=0;
           Ostatok:=0;
           end else begin
            StringDivTrunc:=Trunc(RazmerX div CaTanDegP);
          //StringFinish:=28-steps*CaTanDegP;
            Ostatok:=28-StringDivTrunc*CaTanDegP;
 
              end;
            Label1.Caption:=IntToStr(CaTanDegP);
            Label2.Caption:=FloatToStr(StringDiv);
            {%ENDREGION}
 
 x:=RazmerX-1;
 xRazmerX:=x;
 StringStart:=x;
 yRazmerY:=RazmerY-1;
 y:=0;
TracerY:=0;
TracerX:=0;
steps:=0;
logic:=@logic1;
p:=@p1;
Edge:=@Edge1;
steps1:=0;
xf:=0;
yf:=y+1;
// для отладки первой фазы--------------------------------------------------------------------------------------------------------
 runTime:=gettickcount64;
 repeat
 repeat
 asm
jmp logic
end;
 logic1://пропускаем первую строку
 logic:=@logic2;
 goto logic4;
 logic2:
 Edge:=@Edge3;
 logic:=@logic3;
 logic3:
 TracerY:=y-steps1;//расчёт ячейки правого столбца
 TracerX:=0;
 if TracerY<0 then begin
   TracerX:=RazmerX-(stepFrequent*y+znak*trunc(y/(stepsBig)));//
   if TracerX<0 then TracerX:=0;
   TracerY:=0;
 end;
 logic4:
 altHead:=@altHead1;
 steps:=stepsBig;
 Biger:=x-stepFrequent+1;//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    repeat ///////////////////////////////////////////////////////////////////////////////////////
 dec(steps);
 repeat
 asm
 jmp altHead
 end;
 altHead1:
   Biger:=x-stepFrequent+1;
   goto altHead3;
 altHead2:
 altHead:=@altHead1;
 altHead3:
 if Biger<0 then begin
 Biger:=0;
 steps:=0;
 end;
 repeat
  {%REGION 'Engine'}
  xf:=x+1;//если раскомментироваnm строки После jmp p  то начнётся вывод данных в таблицу
 asm
 jmp p
 end;
 p1:
 StringGrid1.Cells[xf,yf]:= IntToStr(TracerX)+','+IntToStr(TracerY) +','+'1';//запись правого столбца
 p:=@p3;
 goto p4;
 p2:
 StringGrid1.Cells[xf,yf]:= IntToStr(xf)+','+IntToStr(yf)+',' +'0';//автоматическое забивание координат в местах скоса трассы
 p:=@p3;
 goto p4;
 p3:
 StringGrid1.Cells[xf,yf]:= IntToStr(xf)+','+IntToStr(y)+',' +'0';//автоматическое забивание координат трассы на прямых участках
 p4:
 dec(x);
 {%ENDREGION}
 until x<Biger;
 asm
 jmp Edge
 end;
 Edge1://подсчёт шагов в первой строке - других расчётов для первой строки не требуется и знание этого значения нужно для последней строки
 inc(steps1);
 Goto Edge3;
 Edge2://трассировку начальной ячейки каждого шага последней обрабатываемой строки кроме правого столбца
  dec(steps1);
 TracerY:=y-steps1;
 TracerX:=0;
 p:=@p1;
 Goto Edge4;
 Edge3:
 p:=@p2;
 Edge4:
 until steps=0;
  Biger:=x-stepRare+1;
 steps:=stepsBig;
  altHead:=@altHead2;
   until x<0;/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
inc(y);
yf:=y+1;
p:=@p1;
x:=xRazmerX;
until y>yRazmerY-1;
Edge:=@Edge2;
until y>yRazmerY;
             runTime:=gettickcount64-runTime;
             Label5.Caption:=IntToStr(runTime);
         end;
    begin
 steps1;
end;
end.



Ссылка на код работающий без ошибок
https://www.cyberforum.ru/blog... g7996.html

Ну вы понимаете что тут я ничего сочинять не могу, и нажатие от кнопки для среды совершенно одинаково с нажатием этой-же кнопки, если всё перменные объявлены при этом с ним-же снова.
Как я могу искать при условии что нажатие на кнопку не равно нажатию на кнопку - какую-то ошибку.
Дайте совет если можете - как я могу сделать это если код работает как хочет, а не так как его писали.
Я не писал так, чтобы одно и то-же было разным, я пишу так, что одно и то-же оно - одинаковое.

В общем спаисбо за внимание, вряд-ли мне кто-то чем-то поможет. Но думаю, что может ... когда нибудь...ведь свистел уже раз рак на горе... вдруг ещё...
Миниатюры
Чем событие Button Click отличается от события Button Click или крах компилятора ассемблерных оптимизаций   Чем событие Button Click отличается от события Button Click или крах компилятора ассемблерных оптимизаций  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.03.2023, 12:07
Ответы с готовыми решениями:

Два события Click Button
Доброго времени суток. Есть приложение, в котором есть приличное количество кнопок, которые все в начале выполняют одни и те же действия...

События Click для Button
Создаю в цикле кнопки. В конце каждого прохода цикла добавлю созданную кнопку в таблицу. К кнопке привязываю событие. for (....) ...

Событие click() по элементу button
&lt;button class=&quot;ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only&quot; role=&quot;button&quot; aria-disabled=&quot;false&quot;...

27
Заблокирован
20.03.2023, 13:46  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от vlisp Посмотреть сообщение
Гпи, готу и асм в одном флаконе. Хретгир, что у тебя в голове? Все, что должен делать гуй—брать значения из одного компонента, передавать в функцию, которая делает расчет, брать результат и передавать его в другой компонент.
делать то что нужно кодеру, в моём случае это - всё делать быстро и не задумываясь о условиях. Проверку условий я минимизировал, если минимизировать ещё - будет уже маразм.
А что там будет в моём флаконе - это вообще не интересно я об этом даже не задумываюсь особо - главное что оно должно выполнять задачу что я поставлю: это просто должно работать быстро и эффективно.
И чем больше ассемблера - тем больше у меня возможностей. Хотя в принципе мне он так-то больше и не нужен ни для чего пока, кроме этих джампов.

Добавлено через 10 минут
Жаль не все производители видеокарт открывают свой ассемблер, так-то мне и OpenCL и CUDA были-бы не нужны. Нужно искать видеокарты с ассемблером. А так как программируют программисты - мне не интересно, я так не хочу делать как они, мне это не нравится. Единственное - что деваться некуда, и приходится пользоваться тем, что уже наделали.
0
 Аватар для vlisp
1071 / 992 / 153
Регистрация: 10.08.2015
Сообщений: 5,447
20.03.2023, 14:41
Цитата Сообщение от Hretgir Посмотреть сообщение
делать то что нужно кодеру
задумываться, и не только об условиях, но и о последствиях.
Первое - разделить расчеты с гуем, использовать функции, попробовать избавиться от goto и label. как правило ассемблерные вставки используют вместо бубна для быстрого вычисления чего-либо. А нужно ли оно вообще? если нужно то опять же обернуть в функции
0
Заблокирован
20.03.2023, 15:45  [ТС]
Цитата Сообщение от vlisp Посмотреть сообщение
задумываться, и не только об условиях, но и о последствиях.
а это в самом начале ещё было предусмотрено - экономия ресурсов.
Удачи. Транжирьте без меня и свои.
Изучением фантиков заниматься не планировал. С голоду не умру без конфеток.

Изучать фантики нужно только в том случае, если под ними вместо нормальной еды г какое-нибудь.

Я воспользовался тем что было - нормально всё прошло, теперь буду дальше думать так, чтобы фантиками не закидали. А то слишком много фантиков.
0
Заблокирован
24.03.2023, 00:42  [ТС]
Странно, проверял выполнение после того как влез в математическую часть, пришлось математику вернуть
После удаления CUDA исчез скриншотер - стало выдавать ошибку
После возврата математики быстродействие при проверке без сохранения не упало
математику вернул, ассемблерную вставку Head оставил

Code
1
2
3
4
5
6
7
8
9
10
1,1,0   2,1,0   3,1,0   4,1,0   5,1,0   6,1,0   7,1,0   8,1,0   9,1,0   0,0,1
1,2,0   2,2,0   3,2,0   4,2,0   5,2,0   6,2,0   7,2,0   8,2,0   9,2,0   9,0,1
1,3,0   2,3,0   3,3,0   4,3,0   5,3,0   6,3,0   7,3,0   8,3,0   9,3,0   8,0,1
1,4,0   2,4,0   3,4,0   4,4,0   5,4,0   6,4,0   7,4,0   8,4,0   9,4,0   7,0,1
1,5,0   2,5,0   3,5,0   4,5,0   5,5,0   6,5,0   7,5,0   8,5,0   9,5,0   6,0,1
1,6,0   2,6,0   3,6,0   4,6,0   5,6,0   6,6,0   7,6,0   8,6,0   9,6,0   5,0,1
1,7,0   2,7,0   3,7,0   4,7,0   5,7,0   6,7,0   7,7,0   8,7,0   9,7,0   4,0,1
1,8,0   2,8,0   3,8,0   4,8,0   5,8,0   6,8,0   7,8,0   8,8,0   9,8,0   3,0,1
1,9,0   2,9,0   3,9,0   4,9,0   5,9,0   6,9,0   7,9,0   8,9,0   9,9,0   2,0,1
0,8,1   0,7,1   0,6,1   0,5,1   0,4,1   0,3,1   0,2,1   0,1,1   0,0,1   1,0,1
код
Кликните здесь для просмотра всего текста
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
repeat
  dec(steps);
  repeat
  asm
 jmp logic
 end;
  logic1://пропускаем первую строку
  logic:=@logic2;
  goto logic4;
  logic2:
  Edge:=@Edge3;
  logic:=@logic3;
  logic3:
  TracerY:=y-steps1;//расчёт ячейки правого столбца
  TracerX:=0;
  if TracerY<0 then begin
    TracerX:=RazmerX-(stepFrequent*y+znak*trunc(y/(stepsBig+1)));//
    if TracerX<0 then TracerX:=0;
    TracerY:=0;
  end;
  logic4:
  altHead:=@altHead1;
  steps:=stepsBig;
     repeat
    repeat
    dec(steps);
 asm
 jmp altHead
 end;
 altHead1:
   Biger:=x-stepFrequent+1;
   goto altHead3;
 altHead2:
 altHead:=@altHead1;
 altHead3:
 if Biger<1 then begin
 Biger:=0;
 steps:=0;
 end;
 repeat
  {%REGION 'Engine'}
  xf:=x+1;//если раскомментироваnm строки После jmp p  то начнётся вывод данных в таблицу
 asm
 jmp p
 end;
 p1:
 StringGrid1.Cells[xf,yf]:= IntToStr(TracerX)+','+IntToStr(TracerY) +','+'1';//запись правого столбца
 p:=@p3;
 goto p4;
 p2:
 StringGrid1.Cells[xf,yf]:= IntToStr(xf)+','+IntToStr(yf)+',' +'0';//автоматическое забивание координат в местах скоса трассы
 p:=@p3;
 goto p4;
 p3:
 StringGrid1.Cells[xf,yf]:= IntToStr(xf)+','+IntToStr(y)+',' +'0';//автоматическое забивание координат трассы на прямых участках
 p4:
 dec(x);
 {%ENDREGION}
 until x<Biger;
 asm
 jmp Edge
 end;
 Edge1://подсчёт шагов в первой строке - других расчётов для первой строки не требуется и знание этого значения нужно для последней строки
 inc(steps1);
 Goto Edge3;
 Edge2://трассировку начальной ячейки каждого шага последней обрабатываемой строки кроме правого столбца
  dec(steps1);
 TracerY:=y-steps1;
 TracerX:=0;
 p:=@p1;
 Goto Edge4;
 Edge3:
 p:=@p2;
 Edge4:
    until steps=0;
    altHead:=@altHead2;
     Biger:=x-stepRare+1;
     steps:=stepsBig;
     stepFrequentD:=stepFrequent;
   until x<0;/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
inc(y);
yf:=y+1;
p:=@p1;
x:=xRazmerX;
until y>yRazmerY-1;
Edge:=@Edge2;
until y>yRazmerY;

Что-то да, что-то я перенапрягся с математикой, влез там улучшать её, вроде было норм, но сегодня как и обычно решил проверить - всё ли на своих местах, и вот с математикой оказалось что нет.
Хотя было, но что-то смотрю и скриншот один и тот-же два раза запостил. За весь отпуск ни грамма выпивки, тем более при работе с кодом. А то заколебали трезвенники-язвенники писать что я на веществах сижу. Это они сидят. Причём конкретно-уже не спрыгнут. Мне от этого не легче - просто они не хотят спрыгивать.

Сейчас скриншотер установлю по новой.

Добавлено через 7 минут
Работает в точности как без ассемблерной вставки Head

Добавлено через 6 минут
И кстати вообще что-то страшное там произошло, почему-то чередование перестало работать. Странно...в третьем проекта осталось. Ладно, поправлю.

Добавлено через 35 минут
Ну хорошо, допустим что я увлёкся с ассемблером, и почему-то вдруг стёр с расчётов ранее объявленную переменную, весящую теперь в объявах.
Исправил, без проблем. Тестил на таблице 20 на 20 под углом 20, ну и конечно 45
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
         procedure Vstavka;
          begin
           //CaTanDegP:=round(CaTanDeg);
           //StringDiv:=RazmerX / (CaTanDeg);
           stepFrequent:=round(CaTanDeg);//кол-во пикселей в частом штрихе
           StringDiv:=frac(CaTanDeg);//выборка дробной части катангенса
           StringDiv1:=1-StringDiv;
           znak:=sign(0.5-StringDiv)*sign(StringDiv);//указывает на увеличение или уменьшение результата суммирования этой дробной части при повторе частых штрихов
           if StringDiv>0.5 then  stepsBig:=round(1/StringDiv1) else stepsBig:=round(1/StringDiv);
           if StringDiv=0 then  stepsBig:=1;
//           stepsBig:=round(1/StringDiv1);//
           stepRare:=stepFrequent+znak;//количество пикселей в редком штрихе. промежуточный, пока не нужен.
           bigStep:= stepsBig*stepFrequent;//поправил
           if bigStep=0 then begin
           bigStep:=stepRare;
           stepRare:=0;
 
           end;
           end;
Нужно искать сайт, или свой делать, где нормально с скриншотами и можно вести проект. Всё чередование работает. Математики в циклах не касается. Жаль только что я потёр улучшенную математику. Ну и ладно.

Добавлено через 2 часа 46 минут
В общем увидев что математика мною прикрученная подходит плохо, я решил ввести условие и переменную, потому что человек который предлагал на перегонки проги погонять - лгун, я это знаю точно, и по опыту общения, и по его аргументам - они нулевые.
Ничто быстрее тупого трактора, который ничего, или практически ничего не считает - быть не может.
Поэтому я сделал так
Кликните здесь для просмотра всего текста
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
         procedure Vstavka;
          begin
           //CaTanDegP:=round(CaTanDeg);
           //StringDiv:=RazmerX / (CaTanDeg);
           stepFrequent:=round(CaTanDeg);//кол-во пикселей в частом штрихе
           StringDiv:=frac(CaTanDeg);//выборка дробной части катангенса
           StringDiv1:=1-StringDiv;
           znak:=sign(0.5-StringDiv)*sign(StringDiv);//указывает на увеличение или уменьшение результата суммирования этой дробной части при повторе частых штрихов
           if StringDiv>0.5 then  stepsBig:=round(1/StringDiv1) else stepsBig:=round(1/StringDiv);
           if StringDiv=0 then  stepsBig:=1;
           Ostatok1:=1;
           if CaTanDeg=1 then Ostatok1:=0;
//           stepsBig:=round(1/StringDiv1);//
           stepRare:=stepFrequent+znak;//количество пикселей в редком штрихе. промежуточный, пока не нужен.
           bigStep:= stepsBig*stepFrequent;//поправил
           if bigStep=0 then begin
           bigStep:=stepRare;
           stepRare:=0;
 
           end;
           end;

и вот так
TracerX:=RazmerX-(stepFrequent*y+znak*trunc(y/(stepsBig))+Ostatok1);//

понятно что программа рано или поздно может дать ошибку, чисто гипотетически, когда погрешность при делении Y на stepsBig ,превысит целое,
но она этого не сделает, потому что значение stepsBig - целое число. То-есть при любых размерах поля - это должно работать, а вот как у него - тот ещё вопрос и мне не интересно даже то, как он обходил условия - он мог организовать иначе, но тогда там и алгоритм Брезенхема не нужен и вовсе.
Просто нужно понимать - где нужны формулы, а где нет, я это прекрасно понимаю и не прочь включить мозги, вместо того чтобы жечь ресурсы.
Я дико извиняюсь, не знаю где вести дневник проекта. Понимаю что всем тут надоел.
0
Модератор
 Аватар для D1973
9954 / 6490 / 2461
Регистрация: 21.01.2014
Сообщений: 27,495
Записей в блоге: 3
24.03.2023, 04:16
Цитата Сообщение от Hretgir Посмотреть сообщение
Нужно искать сайт, или свой делать, где нормально с скриншотами и можно вести проект.
Наконец-то одна здравая мысль. Вас уже не раз предупреждали: не превращайте форумную тему в свой личный блог!
2
Заблокирован
24.03.2023, 10:52  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
Наконец-то одна здравая мысль. Вас уже не раз предупреждали: не превращайте форумную тему в свой личный блог!
ну это сочеталось с беспочвенными обвинениями, поэтому трудно назвать предупреждением, скорее зацепка.
Поэтому можно сказать и так - очередная здравая мысль.
0
 Аватар для vlisp
1071 / 992 / 153
Регистрация: 10.08.2015
Сообщений: 5,447
24.03.2023, 15:27
Цитата Сообщение от Hretgir Посмотреть сообщение
это сочеталось с беспочвенными обвинениями
Это не обвинения и они не беспочвенны. по каждому пункту можешь найти обсуждение прям на этом форуме
Цитата Сообщение от Hretgir Посмотреть сообщение
Понимаю что всем тут надоел.
здесь есть блоги, есть гит
0
Заблокирован
25.03.2023, 21:45  [ТС]
Гит в смысле гитхаб? Ну так то да, просто гитхаб слишком глобально, хотя если сделать привязок у себя в профиле, то наверное не плохо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.03.2023, 21:45

Не вызывается событие Button.Click
Привет всем! Только начинаю изучать ASP.NET и вот столкнулся с проблемой... На Web-форме есть кнопка. При нажатии на нее должна...

Как определить обработчик события Button.Click
using System; using System.ComponentModel; using System.Drawing; using System.Security.Permissions; using System.Web; using...

Реализовать метод Гаусса для события button.Click
Всем доброго времени суток. Пишу программу по решению СЛАУ методом Гаусса. Матрица у меня состоит из textBox'ов, которые создаются...

Groupbox.BackColor=Transparent, не срабатывает событие click button
В Groupbox есть кнопка, заметил такую вещь - если его цвет поставить в прозрачный, то не срабатывает событие click у кнопки. Как исправить?

Элемент Label, поддерживающий событие Click как у Button
У меня возник вопрос: как реализовать метку (типа Label), но поддерживающую событие Click как в ButtonBase / Button ?


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

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