Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
122 / 2 / 0
Регистрация: 04.02.2025
Сообщений: 69

Узнать размер переменной

23.03.2025, 23:20. Показов 6220. Ответов 50

Студворк — интернет-сервис помощи студентам
Вопрос носит теоретический характер.

Вот можно узнать размер типа
C#
1
2
byte MyByte;
int Size = sizeof(byte);
Можно узнать тип переменной
C#
1
Type MyType = MyByte.GetType();
А вот узнать размер переменной по имени как-то не получается
C#
1
int Size = sizeof(MyByte); // не работает
В этом заложен какой-то глубокий смысл?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.03.2025, 23:20
Ответы с готовыми решениями:

Надо вывести название переменной, тип данных переменной, значение переменной
у нас есть переменная int variable = 0; Надо вывести название переменной, тип данных переменной, значение переменной как это сделать?

Обеспечить возможность ввода значений в поля Размер x, Размер y
Создать меню с командами InputSize, Choose, Change, Exit. При выборе команды InputSize открывается диалоговое окно, содержащее два поля...

Подогнать размер картинки под размер формы
Здравствуйте! Я накладываю изображение на форму, но я столкнулся с проблемой. Мой код:this.BackgroundImage = new...

50
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
26.03.2025, 03:47
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Jack0v Посмотреть сообщение
А если можно то проблем для значимых типов не вижу.
Проблем может и нет, но повторюсь -- идеология C# немного отличается от C++. Не стоит ожидать что в .net будут работать все фичи из языка с явно другой философией.

Цитата Сообщение от Jack0v Посмотреть сообщение
Даже у всяких массивов и списков есть .lenght
которое показывает количество элементов и не более, к размеру в памяти это отношение не имеет. У того же list есть capacity, который намекает что под капотом там не всё так просто.
0
2410 / 1942 / 764
Регистрация: 27.07.2012
Сообщений: 5,578
26.03.2025, 10:46
Цитата Сообщение от Jack0v Посмотреть сообщение
Ну наверно, по логике вещей, выравнивание не должно учитываться.
Вот именно, что наверное. Я тоже не знаю, только предполагаю.

Цитата Сообщение от Jack0v Посмотреть сообщение
Да и что за такие оптимизации могут произойти с int или byte, что они сменят свой размер? Хотелось бы хотя бы один пример такой оптимизации.
С int или byte ничего не может произойти, это типы, они всегда имею один и тот же размер. А вот с переменной всякое может произойти. Например, компилятор при оптимизации может её вообще выкинуть. Размер чего в таком случае должен вычислить sizeof?
0
122 / 2 / 0
Регистрация: 04.02.2025
Сообщений: 69
26.03.2025, 23:44  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Что-то не вижу связи. Как не знание размера переменной тебе помешает сериализовать структуру в массив?
В С/С++ можно провернуть такой фокус: берём указатель на нужную структуру, приводим его к байтовому (или любому другому) типу в плюсах это char (возможно в новых редакциях появилось что-то ещё, я не знаю) и с этим указателем можно работать как с обычным массивом. Для удобства, чтобы каждый раз к байтовому типу не приводить, можно переприсвоить в указатель чаровского типа. Но чтобы с массивом работать надо знать его размер, и вот тут sizeof() как нельзя кстати.

Цитата Сообщение от Wolfdp Посмотреть сообщение
которое показывает количество элементов и не более, к размеру в памяти это отношение не имеет. У того же list есть capacity, который намекает что под капотом там не всё так просто.
Но можно перемножить на размер типа и получить искомое.

Цитата Сообщение от John Prick Посмотреть сообщение
Например, компилятор при оптимизации может её вообще выкинуть. Размер чего в таком случае должен вычислить sizeof?
Размер выкинутой переменной. Почему бы и нет?


Ладно, хоть этот код работает и на том спасибо.
0
Эксперт .NET
 Аватар для Usaga
14577 / 9479 / 1360
Регистрация: 21.01.2016
Сообщений: 35,759
27.03.2025, 03:28
Цитата Сообщение от Jack0v Посмотреть сообщение
В С/С++ можно провернуть такой фокус: берём указатель на нужную структуру, приводим его к байтовому (или любому другому) типу в плюсах это char (возможно в новых редакциях появилось что-то ещё, я не знаю) и с этим указателем можно работать как с обычным массивом. Для удобства, чтобы каждый раз к байтовому типу не приводить, можно переприсвоить в указатель чаровского типа. Но чтобы с массивом работать надо знать его размер, и вот тут sizeof() как нельзя кстати.
Это всё классно. А C# и сериализация тут причём?
0
 Аватар для Andrey-MSK
3386 / 2272 / 388
Регистрация: 14.08.2018
Сообщений: 7,689
Записей в блоге: 4
27.03.2025, 10:50
Цитата Сообщение от Jack0v Посмотреть сообщение
Но чтобы с массивом работать надо знать его размер, и вот тут sizeof() как нельзя кстати.
В C# длина массива определяется методом Lenght() и далее циклами (for или foreach) решаешь любой вопрос с ним, а так же методами класса Array можно сделать очень много всего.
0
2410 / 1942 / 764
Регистрация: 27.07.2012
Сообщений: 5,578
27.03.2025, 11:32
Цитата Сообщение от Jack0v Посмотреть сообщение
В С/С++ можно провернуть такой фокус: берём указатель на нужную структуру, приводим его к байтовому (или любому другому) типу
В C++ это ещё не UB, но прямая дорожка к нему. То, что язык такое позволяет, а компилятор не бьёт по рукам, не значит, что так делать надо. Вот C# и не позволяет.
1
122 / 2 / 0
Регистрация: 04.02.2025
Сообщений: 69
28.03.2025, 02:54  [ТС]
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
В C# длина массива определяется методом Lenght()
Так это понятно, я применительно к С/С++ говорил. Но опять таки, как было замечено ранее и не мной Lenght указывает не длину массива в байтах, а количество элементов в нём, а это не одно и тоже.

Цитата Сообщение от John Prick Посмотреть сообщение
язык такое позволяет, а компилятор не бьёт по рукам
Раз язык позволяет почему компилятор должен бить по рукам?
Цитата Сообщение от John Prick Посмотреть сообщение
не значит, что так делать надо
Вот надо мне структуру побайтно переложить в массив, как ещё тут можно обойтись малой кровью? Не в ручную же каждое поле копировать в массив.
Цитата Сообщение от John Prick Посмотреть сообщение
Вот C# и не позволяет.
Позволяет. Называется unsafe-контекст.

Цитата Сообщение от Usaga Посмотреть сообщение
Это всё классно. А C# и сериализация тут причём?
При том что такой же фокус я хотел провернуть и в C#, и в принципе сделать это можно, только заморочек чуть больше, но куцый sizeof() подвёл. Хотя его ущербность не сильно мешала, но я всё равно сериалезацию через маршалинг сделал.
А вот десериализацию буду наверно через указатели делать (по другому пока не знаю как).
0
Эксперт .NET
 Аватар для Usaga
14577 / 9479 / 1360
Регистрация: 21.01.2016
Сообщений: 35,759
28.03.2025, 03:55
Цитата Сообщение от Jack0v Посмотреть сообщение
При том что такой же фокус я хотел провернуть и в C#, и в принципе сделать это можно, только заморочек чуть больше, но куцый sizeof() подвёл. Хотя его ущербность не сильно мешала, но я всё равно сериалезацию через маршалинг сделал.
А вот десериализацию буду наверно через указатели делать (по другому пока не знаю как).
И пофиг тебе, что есть такая штука как JIT и версия среды исполнения, которые в праве определять внутреннее представление объектов так как им удобнее для текущей архитектуры процессора и версии .NET? И на кучу управляемую GC тебе тоже пофиг?..
0
 Аватар для roach1967
985 / 465 / 234
Регистрация: 27.06.2014
Сообщений: 1,039
28.03.2025, 06:34
Jack0v, может эта статья поможет...
1
 Аватар для Andrey-MSK
3386 / 2272 / 388
Регистрация: 14.08.2018
Сообщений: 7,689
Записей в блоге: 4
28.03.2025, 08:38
Цитата Сообщение от Jack0v Посмотреть сообщение
указывает не длину массива в байтах, а количество элементов в нём, а это не одно и тоже
А зачем длина массива в байтах? В NET управляемая память, ей занимается сборщик мусора (GC) и среда выполнения, там объекты могут быть абсолютно не того размера который вы вычислите. В NET не практикуется прямая работа с памятью, всё управляется средой выполнения.

Если хотите писать в стиле C/C++ используйте unsafe, но и в этом случае всё будет отличатся... И смысл тогда перехода на NET? Пишите дальше на C/C++...
0
122 / 2 / 0
Регистрация: 04.02.2025
Сообщений: 69
29.03.2025, 05:26  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
И пофиг тебе, что есть такая штука как JIT и версия среды исполнения, которые в праве определять внутреннее представление объектов так как им удобнее для текущей архитектуры процессора и версии .NET? И на кучу управляемую GC тебе тоже пофиг?..
Я чёт тебя никак не пойму. Ты к чему клонишь, что в C# нельзя сделать сериализацию структур? Можно. Вон, даже статья есть.

Цитата Сообщение от roach1967 Посмотреть сообщение
Jack0v, может эта статья поможет...
Да, спасибо, сейчас примерно так и делаю.

Цитата Сообщение от Andrey-MSK Посмотреть сообщение
А зачем длина массива в байтах?
Если хотите писать в стиле C/C++ используйте unsafe, но и в этом случае всё будет отличатся
Буквально в предыдущем сообщении об этом писал.

Цитата Сообщение от Andrey-MSK Посмотреть сообщение
И смысл тогда перехода на NET? Пишите дальше на C/C++...
Слышал что на С# окошки проще писать. Что-то проще, а что-то оказалось сложнее. Впрочем как обычно.
0
Эксперт .NET
 Аватар для Usaga
14577 / 9479 / 1360
Регистрация: 21.01.2016
Сообщений: 35,759
29.03.2025, 05:49
Цитата Сообщение от Jack0v Посмотреть сообщение
Я чёт тебя никак не пойму. Ты к чему клонишь, что в C# нельзя сделать сериализацию структур? Можно. Вон, даже статья есть.
Я клоню к тому, что C# - язык управляемый. И заниматься такой фигнёй, которой ты занимаешься, он нормально не позволяет.

В языке есть встроенные сериализаторы, которые корректно могут в управляемой среде работать с объектами. Их и надо использовать.

Есть веская причина, зачем ты свой велосипед собрался изобретать?

Кстати, насколько я знаю, в плюсах такая "сериализация" тоже не поощряется.
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
29.03.2025, 06:12
Цитата Сообщение от Jack0v Посмотреть сообщение
Слышал что на С# окошки проще писать.
Ну, если заниматься сериализацией данных через sizeof -- то да, не проще. Если нужно сохранить инфу в тот же файл, используют либо общепринятый json|xml, либо если нужна максимальная скорость и компакность то можно взять например protobuf.

Ещё есть всякие BinaryWriter и BinaryReader, с их помощью в целом тоже можно абсолютно спокойно записать/считать интересующие данные (хоть и не так изящно, как при классической сериализации).
0
 Аватар для Andrey-MSK
3386 / 2272 / 388
Регистрация: 14.08.2018
Сообщений: 7,689
Записей в блоге: 4
31.03.2025, 08:42
Цитата Сообщение от Jack0v Посмотреть сообщение
Слышал что на С# окошки проще писать.
MFC/Qt из C++ исключили?
0
122 / 2 / 0
Регистрация: 04.02.2025
Сообщений: 69
01.04.2025, 01:09  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
И заниматься такой фигнёй, которой ты занимаешься, он нормально не позволяет.
Такое ощущение, что ты вообще не читаешь того что я пишу:
Цитата Сообщение от Jack0v Посмотреть сообщение
...но я всё равно сериалезацию через маршалинг сделал.
Цитата Сообщение от Jack0v Посмотреть сообщение
...сейчас примерно так и делаю.


Цитата Сообщение от Wolfdp Посмотреть сообщение
сохранить инфу в тот же файл
Нужно свой собственный сетевой протокол закодить на канальном уровне. Работаю через PcapDotNet, а он требует байтовый массив.

Цитата Сообщение от Wolfdp Посмотреть сообщение
protobuf
Добавляет что-то своего лишнего.


Цитата Сообщение от Andrey-MSK Посмотреть сообщение
MFC/Qt из C++ исключили?
Не знаю, за что купил за то и продаю. Потребовалось софтину написать вот и решил воспользоваться случаем - C# пощупать.


Цитата Сообщение от kotelok Посмотреть сообщение
Можно так попробовать. Но, согласно документации, оно не всегда может совпадать с 'sizeof':
C#
System.Runtime.InteropServices.Marshal.S izeOf(MyByte);
Ещё вот такой вариант нашёл
System.Runtime.CompilerServices.Unsafe.SizeOf<MyByte>();
0
 Аватар для Andrey-MSK
3386 / 2272 / 388
Регистрация: 14.08.2018
Сообщений: 7,689
Записей в блоге: 4
01.04.2025, 08:42
Цитата Сообщение от Jack0v Посмотреть сообщение
Не знаю, за что купил за то и продаю.
MFC - библиотеки MS для написания UI. Являются обёртками над WinAPI. Встроена в поставку C++ в Visual Studio, нужно отметить соответствующую опцию в установщике.
Qt - сторонняя библиотека для создания UI на языке C++. Является кроссплатформенной.

Добавлено через 6 минут
Jack0v, Если уж сильно хочется поведение как в C/C++ то можно заморочится с C++/CLI. Это язык NET, который предназначен для связи управляемого кода и неуправляемого. В нём есть возможность создавать UI по технологии Windows Forms (нужно лишь настроить шаблон проекта), но она несколько урезана по сравнению с C#. Зато в нём можно писать код на чистом C++ и на C++/CLI.

И не требуйте от C# того поведения которого в нём нет. Это совсем другая технология. Изучите разницу между управляемым кодом (NET) и неуправляемым (C/C++).

Добавлено через 8 минут
Jack0v, Ещё по поводу C++/CLI. Можно создать проект, добавить его в своё решение, написать на C++ нужные вещи, на C++/CLI написать связь для NET, и в проекте на C# уже использовать всё из проекта C++/CLI. В общем выбор за вами
0
Эксперт .NET
 Аватар для Usaga
14577 / 9479 / 1360
Регистрация: 21.01.2016
Сообщений: 35,759
01.04.2025, 08:51
Цитата Сообщение от Jack0v Посмотреть сообщение
Нужно свой собственный сетевой протокол закодить на канальном уровне. Работаю через PcapDotNet, а он требует байтовый массив.
Protobuf в помощь. Зачем насиловать язык чужими для него концепциями мне не понятно.
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
01.04.2025, 11:46
Цитата Сообщение от Jack0v Посмотреть сообщение
Нужно свой собственный сетевой протокол закодить на канальном уровне
Цитата Сообщение от Usaga Посмотреть сообщение
Protobuf в помощь.
+1

То что вам кажется "лишним", не очень то и лишнее. Насколько помню там добавляется числовой индификатор для определения типа данных, а в остальном это очень компактная и быстрая бинарная сериализация. Вообще обычно это "чёрный ящик" который пишет в массив/поток, и читает из него. А как -- дело десятое, и всем пофиг что там добавляется в процессе, пока не стоит задача "максимально компактно".

Даже если отказываться от protobuf, есть BitConverter или BinaryWriter/BinaryReader, которые чуть более предсказуемо пишут/читают. Я не уверен на 100%, но прямая запись структур в массив байт -- не безопасный код, который может зависеть от выполняемой среды. Да и в целом если стоит выбор между "свой велосипед" и "готовое и протестированное решение" -- выбор чаще в пользу последнего.

В целом если уже организовали через прямую запись структуры -- скорее всего вы и дальше будете использовать это, пока не всплывут проблемы (не обязательно что будут), либо пока не переведут проект под руководство более опытного в C# и у него не появиться желание + возможность переделать это. Вам достаточно понять сейчас что в C# делают вообще-то по другому, и по возможности ознакомиться.
0
122 / 2 / 0
Регистрация: 04.02.2025
Сообщений: 69
02.04.2025, 02:28  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Protobuf в помощь.
Ты похоже действительно не читаешь что я пишу:
Цитата Сообщение от Wolfdp Посмотреть сообщение
protobuf.
Цитата Сообщение от Jack0v Посмотреть сообщение
Добавляет что-то своего лишнего.


Цитата Сообщение от Wolfdp Посмотреть сообщение
То что вам кажется "лишним", не очень то и лишнее. Насколько помню там добавляется числовой индификатор для определения типа данных
Перед каждым полем. Скорее всего это нужно для обратной десериализации. Но для меня это именно что лишнее. В протоколе каждое поле стоит на своём месте, каждый байт имеет своё значение. Мне что теперь, протокол подгонять под этот protobuf?
Цитата Сообщение от Wolfdp Посмотреть сообщение
BitConverter или BinaryWriter/BinaryReader
Ознакомлюсь.
Цитата Сообщение от Wolfdp Посмотреть сообщение
В целом если уже организовали через прямую запись структуры -- скорее всего вы и дальше будете использовать это, пока не всплывут проблемы
Вы похоже тоже не читаете что я пишу. Третий раз повторяю:
Цитата Сообщение от Jack0v Посмотреть сообщение
...но я всё равно сериалезацию через маршалинг сделал.


Цитата Сообщение от Andrey-MSK Посмотреть сообщение
щё по поводу C++/CLI. Можно создать проект, добавить его в своё решение, написать на C++ нужные вещи, на C++/CLI написать связь для NET, и в проекте на C# уже использовать всё из проекта C++/CLI.
Нет уж, я доем свой кактус!
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
02.04.2025, 06:24
Цитата Сообщение от Jack0v Посмотреть сообщение
Перед каждым полем. Скорее всего это нужно для обратной десериализации. Но для меня это именно что лишнее. В протоколе каждое поле стоит на своём месте, каждый байт имеет своё значение. Мне что теперь, протокол подгонять под этот protobuf?
ну, обычно закидывается набор байт, а принимающая сторона должна сообразить что это. Грубо говоря на вход приходит плюс-минус 100 байт (а если это Stream, то там в целом считываешь пока считывается). Нужно понять что эти ~100 байт это MessageTypeA, а не MessageTypeB. Т.е. в любом случае нужно вводить флаг-перечислитель, чтобы понимать что пытаешься считать. Причём так как C# это про ООП, то эти самые сообщения пакуются в модели данных.

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

Code
1
2
3
4
5
message User {
    int32 id = 1;
    string login = 2;
    int64 balance = 3;
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    var user = new User
    {
        Id = 39,
        Login = "Miku",
        Balance = 1234
    };
    using var memory = new MemoryStream();
    {
        using var output = new CodedOutputStream(memory);
        user.WriteTo(output);
    }
    var result = memory.ToArray(); // 11 байт, хотя только Id + Balance по идеи должны занимать 12.
 
    ;
Но это всё история прикладного уровня, учитывая что вы используете PcapDotNet, есть подозрение что городите виртуальный адаптер и таки не вы определяете формат пересылаемых данных. Ну или по каким-то причинам хотите видить именно "прямой формат данных", когда сначала идет 4 байта для int, потом сколько-то байт для string и т.д.

Не по теме:

Цитата Сообщение от Jack0v Посмотреть сообщение
Вы похоже тоже не читаете что я пишу
Все всё читают, просто вы всё ещё на волне С++. Плюс у вас изначальный вопрос был вообще про sizeof, т.к. вы спрашиваете не "как правильно решить задачу Х", а придумали решение A и теперь хотите понять как его лучше реализовать, хотя возможно вам следует выбрать решение B.

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

Подогнать размер изображения под размер PictureBox
Как изменить размер изображения при открытии? А то когда я добавляю в пикчер бокс, они обычно бывают не того разрешения и либо вылазят...

Можно ли подогнать размер браузера под размер фонового изображения
Здравствуйте! Подскажите как сделать, чтоб фоновое изображение подходило по ширине к ширине окна браузера? Чтоб оно не дублировалось и не...

Размер приложения превышает размер ресурсов почти на 100 Мб
Здравствуйте..Столкнулся с такой проблемой: Сейчас пишу Metro-приложения под Windows 8..У меня есть некоторые файлы (ресурсы), которые...

Размер изображения в см. если дан размер в пикселях
Смотрю свойства изображения, а мне пишет 2652х4999 пикселей. Что это? Как их перевести в сантиметры? Добавлено через 10 минут ...

Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции
Подскажите, в чем ошибка? Выдает ошибку: Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
SUNO Ai - Река Без Дна
zorxor 31.07.2026
Автор стихотворения - астрофизик Марина Катыс Ссылка на сгенерированную музыкальную композицию: https:/ / suno. com/ song/ 6f6e5464-b290-4650-be6c-44c85f8d8013 Я говорю, что Время- как вода течет. . .
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru