Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
42 / 35 / 8
Регистрация: 10.03.2017
Сообщений: 291
RAD XE3+

Прочитать три байта

05.11.2022, 05:36. Показов 3036. Ответов 54
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Так работает:

Delphi
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
type
 FArrLw=Array[0..2047] of LongWord;
 PArrLw=^FArrLw;
var
 Bm:TBitMap;
 ArrRCM:Array[0..1] of LongWord;
procedure DoReplace(Bm:TBitmap);
  var
   cyc1,cyc2:LongInt;
   psl:PArrLw;
 begin
  if Bm.PixelFormat<>pf32bit then
   Exit;
  for cyc2:=0 to Bm.Height-1 do
   begin
    psl:=Bm.ScanLine[cyc2];
    for cyc1:=0 to Bm.Width-1 do
     psl[cyc1]:=ArrRCM[psl[cyc1] mod 2];
   end;;
 end;
procedure TForm1.FormCreate(Sender:TObject);
 begin
  Bm:=TBitmap.Create;
  Bm.PixelFormat:=pf32bit;
  begin //Для примера
   Bm.SetSize(100,100);
   ArrRCM[0]:=Random($FFFFFF);
   ArrRCM[1]:=Random($FFFFFF);
   BitBlt(Bm.Canvas.Handle,0,0,100,100,GetDC(0),0,0,SRCCOPY);
  end;
  DoReplace(Bm);
  Form1.Image1.Picture.Assign(Bm);
 end;
Как теперь сделать тоже самое, только для pf24bit?
Как сделать, чтобы оно читало по 3 байта, и устанавливала обратно тоже 3 байта?
Желательно именно при такой конфигурации, потому что важна скорость.
И массивы будут что-то вроде:
Delphi
1
2
 FArrLw=Array[0..2047] of 0..$FFFFFF;
 ArrRCM:Array[0..1] of 0..$FFFFFF;
Этот пример с 4-мя байтами LongWord'а уже работает быстро, но нужно ещё быстрее. В оригинальной задаче у меня стоит обрезка по маске:
Delphi
1
psl[cyc1]:=ArrRCol[psl[cyc1] and $FFFFFF]; //ArrRCol:Array[0..$FFFFFF] of LongWord;
потому что не могу понять, как читать по 3 байта, а не 4. Думаю, что если избавлюсь от "and $FFFFFF", то смогу выиграть ещё немного больше производительности.
P.s. потоки само собой юзаются. Насколько я понимаю, читать/писать 3 байта вместо 4-х = быстрее. Как сделать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.11.2022, 05:36
Ответы с готовыми решениями:

Как прочитать три разных байта в файле
Вот так пробовал: FileStream fs = File.OpenRead(path); byte f1 = new byte; byte f2 = new byte; byte...

Как прочитать строку до нулевого байта?
Имеется класс для чтения и записи в память процесса. Данный код читает строку указанной длины (длина полезной строки) не известна...

Как прочитать файл в бинарном режиме по 32 байта
Здравствуйте, как считать файл в бинарном режиме (в двоичной системе счисления) по 32 байта, попутно записывая эти 32 байта в переменную...

54
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
05.11.2022, 12:36
Студворк — интернет-сервис помощи студентам
так еще попробуй
Delphi
1
2
3
4
5
function ugorekTest(AVal: TRGBTriple): TColor;
var A: Array[0..2] of Byte absolute AVal;
begin
  Result := PInteger(@A)^;
end;
Добавлено через 2 минуты
хотя даже так, функцию можно и выкинуть))

Delphi
1
2
3
4
function ugorekTest(AVal: TRGBTriple): TColor;
begin
  Result := PInteger(@AVal)^;
end;
Добавлено через 4 минуты
недавно присал программу там гигабайтные файлы с данными по 2 байта их надо было видоизменить и записать в другой файл в другую структуру даже, т.е. чтение по 2 байта ооооччень долгое, само быстро получилось произвести эту операцию, когда я взял именно указатель на память и "накладывал" в виде шаблона Word тип, получалось чтение все так же по 2 байта, но эстримально быстро

Добавлено через 5 минут
1 гигабайт удалось прочитать, видоизменить и записать в новый файл со скоростью 1.5 секунды
второй вид файла был по структуре такой же, только там зловреды писали данные с перевернутыми битами, операцию переворота использовал как ассемблеровскуюв ставку, скорость на тот же 1 гигабайт стала уже почти 2 секунды. Тесты проводились на i7 9700k

потестируй что будет быстрее)
0
42 / 35 / 8
Регистрация: 10.03.2017
Сообщений: 291
06.11.2022, 01:22  [ТС]
Блет, очень сложно, очень. Зря я попёрся в эти три байта. Как я не жонглировал с move(), CopyMemory(), или PInteger(@A)^ - всё либо не компилируется, либо access violation. А это я ещё с потоками не пробовал. Сдаюсь.
С "absolute AVal" даже пробовать не буду, всё равно ничего не получится. Оставлю LongWord и не буду парить себе мозги. Всем спасибо.
0
Злостный нарушитель
 Аватар для Verevkin
10889 / 5825 / 1288
Регистрация: 12.03.2015
Сообщений: 26,888
06.11.2022, 01:25
Цитата Сообщение от ugorek Посмотреть сообщение
Сдаюсь.
Лузер.

0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
06.11.2022, 02:02
ну так что? оставишь реально задачу для себя не решенной? Ну как так?? А как спать?
0
06.11.2022, 02:08

Не по теме:

Цитата Сообщение от Arcor Посмотреть сообщение
А как спать?
Ну по молодости может и обойдется. Если задача не очень важная/нужная.

0
42 / 35 / 8
Регистрация: 10.03.2017
Сообщений: 291
06.11.2022, 02:21  [ТС]
Цитата Сообщение от Arcor Посмотреть сообщение
задачу для себя не решенной?
Ну так ведь она уже была решена, но только LongWord'ом.
Я лишь взял на себя дерзость выжать дополнительные "+2 fps". Не проканало.
Мне нужно дополнительно ещё 10 лет исследований, 100 млрд долларов финансирования, и 499 книг по Delphi, чтобы я смог наконец решить эту задачу самостоятельно.
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
06.11.2022, 02:41
Цитата Сообщение от ugorek Посмотреть сообщение
100 млрд долларов финансирования
думаю никто не даст))))
Цитата Сообщение от ugorek Посмотреть сообщение
и 499 книг по Delphi
а они тут при чем?
0
42 / 35 / 8
Регистрация: 10.03.2017
Сообщений: 291
06.11.2022, 02:45  [ТС]
Цитата Сообщение от Arcor Посмотреть сообщение
а они тут при чем?
Пример источника информации. Возможно ещё понадобятся 800 гайдов на ютубе от индусов. Или мануалы и документация. (форумы из списка вычёркиваем).
За 20 лет думаю управлюсь.
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
06.11.2022, 02:50
сядь и разберись что такое указатель, что такое кусок памяти, как хранится там значение, как хранится структура
это все на пальцах самому себе объясняется за 1 вечер))) с помощью логгеров и дебаггеров и ручки с листочком в клеточку, да а книжки. да кто по ним что выучил? ну может что-то теоретическое разве что, а про ютуб я надеюсь была шутка?)) там нету инфы которая помогла бы, там есть только слив говна от "супер-экспертоф" доброй ночи
0
42 / 35 / 8
Регистрация: 10.03.2017
Сообщений: 291
09.11.2022, 10:59  [ТС]
* спустя 15 лет *
Я понял способ как копировать по три байта!
Чтение и замена по 3 байта
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure DoConvert(Bm:TBitmap);
  var cyc1,cyc2,lw,pp:LongWord;
 begin
  lw:=0;
  for cyc2:=0 to Bm.Height-1 do
   begin
    pp:=LongWord(Bm.ScanLine[cyc2]);
    for cyc1:=0 to Bm.Width-1 do
     begin
      move(Pointer(pp+cyc1*3)^,lw,3); //CopyMemory(@lw,Pointer(pp+cyc1*3),3);
      move(ArrRCol[lw],Pointer(pp+cyc1*3)^,3); //CopyMemory(Pointer(pp+cyc1*3),@ArrRCol[lw],3);
     end;
   end;
 end;

А я думал это не возможно. Повезло повезло.
И даже ядерный реактор из TRGBTriple и helper'ов с блэкджеком и absolute'ами изобретать не пришлось.
Камон, этот раздел "Delphi для начинающих", простейшая задача с копированием байтов. И никто не мог подсказать даже одну строчку типа "move(Pointer(LongWord(varpointer)+cyc1* 3)^, vartcolor,3);"?
Обязательно нужно было чтобы я сам додумался, да?

Ну коль задача решена, что там по производительности?

LongWord:
без потоков - 51 fps
два потока - 55 fps
много потоков - 40 fps
3 байта:
без потоков - 28 fps
два потока - 36 fps
много потоков - 35 fps
4 байта:
без потоков - 31 fps
два потока - 40 fps
много потоков - 36 fps

-_-

Моё изначальное решение было самым производительным. Шок контент. Самое время мне пофапать на свою офигительность.
Если даже копирование по байтам не может справиться, то и всякие TRGBTriple подавно хрень полная.

Во славу LongWord'а!
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,496
09.11.2022, 11:15
Цитата Сообщение от ugorek Посмотреть сообщение
Моё изначальное решение было самым производительным. Шок контент.
Ну как бэ, про это написал сразу ...
Цитата Сообщение от AzAtom Посмотреть сообщение
Не факт.
Почему ты думаешь, что выполнить 3 команды, копирующие по 1 байту будет быстрее, чем выполнить 1 команду, копирующую 4 байта?
К тому же, при вызове move выполняется далеко не 3 команды. Думаю, тут быстрее было бы теми самыми массивами типа TRGBTriple. Но опять же, до longword (32 бит) не дотянется, думаю.
0
42 / 35 / 8
Регистрация: 10.03.2017
Сообщений: 291
09.11.2022, 11:17  [ТС]
Что?
Цитата Сообщение от AzAtom Посмотреть сообщение
3 команды, копирующие по 1 байту
Где?

У меня 3 байта копируются за раз. Вот, в конце стоит цифра "3":
Delphi
1
move(Pointer(pp+cyc1*3)^,lw,3);
Или я что-то не так понял?
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,496
09.11.2022, 11:22
Цитата Сообщение от ugorek Посмотреть сообщение
Или я что-то не так понял?
Угу. Посмотри исходник этого move.
0
42 / 35 / 8
Регистрация: 10.03.2017
Сообщений: 291
09.11.2022, 11:30  [ТС]
Цитата Сообщение от AzAtom Посмотреть сообщение
исходник move
Аа, так вы про это. Ну, там
тьма ассемблерных команд
Delphi
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
procedure Move(const Source; var Dest; Count: NativeInt);
{$IF defined(POSIX)}
begin
  if Count > 0 then
    memmove(Dest, Source, Count);
end;
{$ELSEIF defined(PUREPASCAL)}
{$POINTERMATH ON}
 
...
 
{$ELSE !PUREPASCAL}
{$IFDEF CPUX86}
asm
        CMP     EAX, EDX
        JE      @@Exit {Source = Dest}
        CMP     ECX, 32
        JA      @@LargeMove {Count > 32 or Count < 0}
        SUB     ECX, 8
        JG      @@SmallMove
@@TinyMove: {0..8 Byte Move}
{$IFDEF PIC}
        PUSH    EBX
        PUSH    EAX
        PUSH    ECX
        CALL    GetGOT
        POP     ECX
        MOV     EBX, EAX
        ADD     EBX, offset @@JumpTable+32
        MOV     ECX, [EBX+ECX*4]
        ADD     ECX, EAX
        POP     EAX
        POP     EBX
        JMP     ECX
{$ELSE}
        JMP     DWORD PTR [@@JumpTable+32+ECX*4]
{$ENDIF}
@@SmallMove: {9..32 Byte Move}
        FILD    QWORD PTR [EAX+ECX] {Load Last 8}
        FILD    QWORD PTR [EAX] {Load First 8}
        CMP     ECX, 8
        JLE     @@Small16
        FILD    QWORD PTR [EAX+8] {Load Second 8}
        CMP     ECX, 16
        JLE     @@Small24
        FILD    QWORD PTR [EAX+16] {Load Third 8}
        FISTP   QWORD PTR [EDX+16] {Save Third 8}
@@Small24:
        FISTP   QWORD PTR [EDX+8] {Save Second 8}
@@Small16:
        FISTP   QWORD PTR [EDX] {Save First 8}
        FISTP   QWORD PTR [EDX+ECX] {Save Last 8}
@@Exit:
        RET
        NOP {4-Byte Align JumpTable}
        NOP
@@JumpTable: {4-Byte Aligned}
        DD      @@Exit, @@M01, @@M02, @@M03, @@M04, @@M05, @@M06, @@M07, @@M08
@@LargeForwardMove1: {4-Byte Aligned}
        LEA     EDX, [EDX+ECX]
@@LargeForwardMove2:
        PUSH    EDX
        FILD    QWORD PTR [EAX] {First 8}
        LEA     EAX, [EAX+ECX-8]
        LEA     ECX, [ECX+EDX-8]
        FILD    QWORD PTR [EAX] {Last 8}
        PUSH    ECX
        NEG     ECX
        AND     EDX, -8 {8-Byte Align Writes}
        LEA     ECX, [ECX+EDX+8]
        POP     EDX
@FwdLoop:
        FILD    QWORD PTR [EAX+ECX]
        FISTP   QWORD PTR [EDX+ECX]
        ADD     ECX, 8
        JL      @FwdLoop
        FISTP   QWORD PTR [EDX] {Last 8}
        POP     EDX
        FISTP   QWORD PTR [EDX] {First 8}
        RET
@@LargeMove:
        JNG     @@LargeDone {Count < 0}
        CMP     EAX, EDX
        JA      @@LargeForwardMove2
        SUB     EDX, ECX
        JC      @@BackwardMove
        CMP     EAX, EDX
        JNA     @@LargeForwardMove1
@@BackwardMove:
        LEA     EDX, [EDX+ECX]
        SUB     ECX, 8 {Backward Move}
        PUSH    ECX
        FILD    QWORD PTR [EAX+ECX] {Last 8}
        FILD    QWORD PTR [EAX] {First 8}
        ADD     ECX, EDX
        AND     ECX, -8 {8-Byte Align Writes}
        SUB     ECX, EDX
@BwdLoop:
        FILD    QWORD PTR [EAX+ECX]
        FISTP   QWORD PTR [EDX+ECX]
        SUB     ECX, 8
        JG      @BwdLoop
        POP     ECX
        FISTP   QWORD PTR [EDX] {First 8}
        FISTP   QWORD PTR [EDX+ECX] {Last 8}
@@LargeDone:
        RET
@@M01:
        MOVZX   ECX, [EAX]
        MOV     [EDX], CL
        RET
@@M02:
        MOVZX   ECX, WORD PTR [EAX]
        MOV     [EDX], CX
        RET
@@M03:
        MOV     CX, [EAX]
        MOV     AL, [EAX+2]
        MOV     [EDX], CX
        MOV     [EDX+2], AL
        RET
@@M04:
        MOV     ECX, [EAX]
        MOV     [EDX], ECX
        RET
@@M05:
        MOV     ECX, [EAX]
        MOV     AL, [EAX+4]
        MOV     [EDX], ECX
        MOV     [EDX+4], AL
        RET
@@M06:
        MOV     ECX, [EAX]
        MOV     AX, [EAX+4]
        MOV     [EDX], ECX
        MOV     [EDX+4], AX
        RET
@@M07:
        MOV     ECX, [EAX]
        MOV     EAX, [EAX+3]
        MOV     [EDX], ECX
        MOV     [EDX+3], EAX
        RET
@@M08:
        FILD    QWORD PTR [EAX]
        FISTP   QWORD PTR [EDX]
end;

"Тьма" <> "3 команды". Я всё ещё что-то понял не так.
К тому же, не думаю что TRGBTriple оказался бы лучше.
Как я полагаю, LongWord'ом быстрее всего, потому что компилятором на самом низком (доступном мне-простому-смертному) уровне. А move() компилируются в большее количество телодвижений, поэтому и медленнее.
Коль кто-то знает способ не-longword'ом и быстрее - я весь во внимании, жуть как интересно.
0
Злостный нарушитель
 Аватар для Verevkin
10889 / 5825 / 1288
Регистрация: 12.03.2015
Сообщений: 26,888
09.11.2022, 13:04
Цитата Сообщение от ugorek Посмотреть сообщение
Камон, этот раздел "Delphi для начинающих", простейшая задача с копированием байтов. И никто не мог подсказать даже одну строчку типа "move.............
Ну я ж писал:
Цитата Сообщение от Verevkin Посмотреть сообщение
Это же непрерывные 3 байта в памяти. Юзай move(), а ещо лучше - напиши хэлпер для TRGBTriple, который будет юзать move()
move() - низкоуровневая процедура копирования памяти, она работает максимально быстро.
Что с тобой не так, чувак?
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,496
09.11.2022, 13:05
Цитата Сообщение от ugorek Посмотреть сообщение
Обязательно нужно было чтобы я сам додумался, да?
Желательно.
0
42 / 35 / 8
Регистрация: 10.03.2017
Сообщений: 291
09.11.2022, 13:43  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
Что с тобой не так, чувак?
Вот что:
Цитата Сообщение от ugorek Посмотреть сообщение
У меня не 1000iq,
Я вам не сеньор-хакермен. Как называется этот раздел форума?

И второе: У меня есть вопрос.
Цитата Сообщение от Verevkin Посмотреть сообщение
напиши хэлпер ... будет юзать move()
move() - низкоуровневая процедура ... работает максимально быстро.
Я только что написал код, использующий move(), который читает/пишет прямо из картинки TBitmap'а по 3 байта. И результаты этого - снижение производительности в ~2 раза.
Ну так с чего внизапно друг, TRGBTriple и helper, использующий move() будут работать быстрее моего move()?
ЧЯПНТ? Что я понимаю не так?
Ох нет, только не говорите, что тут нужно ещё 4 года исследований и 20 млн долларов финансирования. Я более не потяну.
0
Злостный нарушитель
 Аватар для Verevkin
10889 / 5825 / 1288
Регистрация: 12.03.2015
Сообщений: 26,888
09.11.2022, 13:50
Цитата Сообщение от ugorek Посмотреть сообщение
Я вам не сеньор-хакермен. Как называется этот раздел форума?
да ну тебя, противный.
0
 Аватар для mr-Crocodile
3054 / 1673 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
09.11.2022, 14:16
ugorek, я не вникал (и не собираюсь вникать) в дебри решаемой задачи.

но вот на этот вопрос попробую ответить
Цитата Сообщение от ugorek Посмотреть сообщение
Я только что написал код, использующий move()
почитай про функцию Windows API CopyMemory

Добавлено через 2 минуты
Цитата Сообщение от ugorek Посмотреть сообщение
И результаты этого - снижение производительности в ~2 раза.
Так поздравляю. И зачем тему продолжать развивать - ты свою задачу решил, работает всё супер быстро, ты молодец, на этом и сказке конец?!
0
42 / 35 / 8
Регистрация: 10.03.2017
Сообщений: 291
09.11.2022, 14:31  [ТС]
Цитата Сообщение от mr-Crocodile Посмотреть сообщение
в дебри решаемой задачи
Заменить пиксели в картинке, быстро. Коротко и понятно.
Цвет задаётся тремя байтами RGB, вот жеж дасадное разочарование!

Чтобы заменить пиксель, его наверное нужно как-то прочитать. А потом записать. Интересно как? Много как. А быстро как? А быстро - longword'ом или я хрен знает. Были ещё варианты, но они благополучно медленные.


Ну а эта ссылка
Цитата Сообщение от mr-Crocodile Посмотреть сообщение
Windows API CopyMemory
очень информативная

Читать не учитаться. Миллион знаний на квадратный сантиметр экрана. После посещения этой страницы я чувствую умопомрачительное просвещение.
А если подразумевалась ссылка на MSDN, то что именно мне там нужно было понять? Ну ок, почитал да. А дальше что? У меня не 1000iq, можно конкретнее намекнуть, чем простое "прочитай всё целиком"?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.11.2022, 14:31

Как прочитать значение байта по адресу в оперативке?
Как прочитать значение байта по адресу в оперативке? Аналог peek(a) в qbasic?

Как прочитать несколько байтов в файле с n-го байта по m-й байт ?
Как прочитать несколько байтов в файле с n-го байта по m-й байт ?

Прочитать 4 байта как вещественное число с плавающей точкой
Всем здравствуйте. имеется байтовый массив из четырёх байт как прочитать его как одно значение типа Single схожая задача имеется...

В переменную типа integer прочитать число длиною в 4 байта
Добрый день. Кто чем может, помогите разобраться. Решил разобраться с изображениями (пока формат bmp), не использую стандартные...

Три байта в Int
Приветствую. так как С# не поддерживает 24 bit integers, a BitConverter требует четвертый байт. Нужна помощь. Из трех байт нужно...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
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 и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru