Форум программистов, компьютерный форум, киберфорум
XNA/MonoGame
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.98/56: Рейтинг темы: голосов - 56, средняя оценка - 4.98
 Аватар для demonmov
34 / 11 / 0
Регистрация: 22.09.2010
Сообщений: 357

Проблемы, связанные с ContentManager и загрузкой/выгрузкой контента

31.12.2010, 13:40. Показов 12833. Ответов 106
Метки нет (Все метки)

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

1) Рабочий пример загрузки текстуры
2) RootDirectory нельзя изменить после присвоения. Однако это не мешает инициализировать её абсолютным путём, например: "C:\\"
3) Пример загрузки в случае RootDirectory = "Content" (расширения при загрузке не указываются):
C#
1
texture = Content.Load<Texture2D>(@"folder1\\folder2\\texture");
4) Пример загрузки текстуры, не используя ContentManager:
C#
1
texture = Texture2D.FromStream(GraphicsDevice, File.OpenRead("путь" + ".png"));
5)При выгрузке ассетов(не всех сразу вызовом Unload()), занимаемая ими память не освобождается даже при обнулении ссылки на ассеты и вызова сборщика мусора. Память высвобождается путём обнуления ссылок, которые указывают на этот экземпляр контент менеджера. Есть несколько способов избежать этого:
__А) создавать ContentManager на каждый ассет.
__Б) создать свой класс. наследуя от ContentManager

6) Способ загрузки эффектов, текстур, моделей и т.д. в реальном времени (динамическая компиляция).

7) Чтобы игра не зависала при длительных загрузках, загружать нужно в отдельном потоке, используя классы Thread/Task и т.д.

________________________________________ ___________________

Помогите, не пойму в чем проблема, в участке кода
spriteTexture = content.Load<Texture2D>(@"all\textures\q werty1");
выскакивает исключение Error loading "all\textures\qwerty1". File not found.
Хотя в проект добавлен каталог all и в нем textures и внутри файл qwerty1.jpg, и через проект изображение открывается. Я даже задавал полный путь - то же самое пишет.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.12.2010, 13:40
Ответы с готовыми решениями:

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

Проблемы с выгрузкой информации в Excel
Есть вьюха первое поле - номер во вьюхе остальные поля с данными текстовыми и одно поле многострочное. Выгружаю все это щастье в...

Настройки Биос, связанные с загрузкой?
Доброго времени суток! Постигла меня следующая проблема: в windows отказали клавиатура и мышь (причём произошло это после сканирования...

106
181 / 107 / 13
Регистрация: 22.03.2010
Сообщений: 456
03.08.2012, 11:41
Студворк — интернет-сервис помощи студентам
Я думаю у Вас отпадут подобные вопросы, если Вы внимательно изучите почему и как создавалась XNA, ну и конечно структуру и логику ее работы.
XNA можно сравнить (только давайте не переходить в полемику) с игровым движком.
А теперь Вы задаете вопрос, я хочу использовать преимущества этого движка, но использовать сам движок не хочу.
Так не получиться.
0
6 / 6 / 0
Регистрация: 01.08.2011
Сообщений: 133
03.08.2012, 13:37
Т.е. простым языком никак) и таки да, в самую точку "я хочу использовать преимущества этого движка, но использовать сам движок не хочу".

Так или иначе конструктор у ContentManager'а есть. Значит не все потеряно. Да и при том класс Game каким-то образом инициализирует его.

Добавлено через 2 минуты
У ContentManager'а есть конструктор, у Effect есть конструктор, кто-нибудь знает как хотябы одним из них пользоваться?
0
51 / 38 / 5
Регистрация: 14.01.2012
Сообщений: 127
03.08.2012, 14:18
Вот пример как использовать xna в winforms, т.е. без класса Game, там и ContentManager есть. В обшем там нужен ServiceContainer реализующий IServiceProvider и в решении должны быть проекты ContentLibrary на которую ссылается главный проект и Content(в который кидаем модельки, шрифты и проч.) на который ссылается ContentLibrary
0
6 / 6 / 0
Регистрация: 01.08.2011
Сообщений: 133
03.08.2012, 14:22
nrv, отлично, посмотрим. Спасибо. Возможно, есть способ найти способ без трех проектов в решении сделать) а то очень уж неудобно получается.
0
51 / 38 / 5
Регистрация: 14.01.2012
Сообщений: 127
03.08.2012, 14:58
Сорри, не тот пример, точнее его 1-я часть, вотвторая там как раз про это
0
6 / 6 / 0
Регистрация: 01.08.2011
Сообщений: 133
03.08.2012, 15:20
Да, я разобрался, спасибо, nrv)
0
6 / 6 / 0
Регистрация: 01.08.2011
Сообщений: 133
03.08.2012, 19:28
Разобрал ссылку, любезно предоставленную nrv.
Отвечаю сам на вопрос №2 (Создание ContentManager'a без класса Game):

Здесь довольно просто. Попробую объяснить наиболее общими словами.
Конструктор ContentManager требует объект, реализующий IServiceProvider, который по сути имеет всего одну функцию: GetService. Эта функция должна возвращать объект, реализующий IGraphicsDeviceService. В свою очередь этот объект имеет одну функцию и несколько (интуитивно понятных) событий. Функция должна возвращать GraphicsDevice, от которого я, собственно, и отталкивался с самого начала. Теперь по полочкам:

ContentManager <- IServiceProvider <- IGraphicsDeviceService <- GraphicsDevice.

Вот наиболее простой пример создания нового ContentManager'а.

C#
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
public class ContentManagerCreator
    {
 
        private ContentManager contentManager; // Сам менеджер, который мы будем возвращать
        public ContentManager Manager { get { return contentManager; } }
 
        public ContentManagerCreator(GraphicsDevice Device)
        {
            contentManager = new ContentManager( new ServiceProvider(Device) );
        }
 
        //////////////////////////////////////////////////////// Реализация IServiceProvider
        private class ServiceProvider : IServiceProvider
        {
            Dictionary<Type, object> services = new Dictionary<Type, object>();
 
            private GraphicsDevice _device;
 
            public ServiceProvider(GraphicsDevice Device)
            {
                _device = Device;
            }
 
            
            public object GetService(Type serviceType)
            {
                // Не знаю, какие еще варианты sericeType могут быть запрошены, но в примере только IGraphicsDeviceService.
                if (serviceType.Name == "IGraphicsDeviceService")
                    return new GraphicsDeviceService(_device);
                return null;
            }
        }
 
        //////////////////////////////////////////////////////// Реализация IGraphicsDeviceService
        private class GraphicsDeviceService : IGraphicsDeviceService
        {
 
            public event EventHandler<EventArgs> DeviceCreated;
            public event EventHandler<EventArgs> DeviceDisposing;
            public event EventHandler<EventArgs> DeviceReset;
            public event EventHandler<EventArgs> DeviceResetting;
            
            private GraphicsDevice _device;
 
            public GraphicsDeviceService(GraphicsDevice Device)
            {
                _device = Device;
            }
 
            public GraphicsDevice GraphicsDevice
            {
                get { return _device; }
            }
        }
    }
Проверил на текстуре. Работает. Но не все так просто, как хотелось бы. Дело в том, что метод Manager.Add<T> ( filename );
Не работает с обычными файлами, а только с компилированными ".xnb", а это доставляет ооооооооооооочень много хлопот. Фактически, нужно создавать еще один класс, который компилирует файлы, а это происходит довольно медленно. И сам класс компиляции очень сложен (для меня). Поэтому, есть два пути.

Первый: скачать где-нибудь программу, которая компилирует файлы (нашел одну называется XNA Content Builder (XCB), но у меня не запустилась и судя по всему, она младше версии 3.1).

Второй: использовать готовый класс из того примера, что отправил nrv - ContentBuilder. Разобраться я в нем за такой короткий срок не смог, да и там используется пространство имен Microsoft.Build, которое я не изучал. Но алгоритм работы его напишу:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
contentBuilder = new ContentBuilder();
// Говорим манагеру, где ContentBuiler складирует компилированные файлы.
manager.RootDirectory = contentBuilder.OutputDirectory;
 
// Clear делать перед каждой загрузкой.
contentBuilder.Clear();
// Добавляем задание
// Параметры по порядку
// 1) Путь к файлу
// 2) Название нового .xnb файла
// 3) Почему то в примере это null, я не стал разбираться почему
// 4) Строка, определяющая, что мы компилируем. В примере компилировали 3D-модель, и на его месте стоял "ModelProcessor", я компилирую текстуру и заменил на "TextureProcessor", заработало нормально.
contentBuilder.Add(path + "//1.jpg", "Texture", null, "TextureProcessor");
// Тут выполняем заданные операции, получаем пустую строку если все ОК, или текст ошибки.
string buildError = contentBuilder.Build();
 
// Ну и если все ОК
if (string.IsNullOrEmpty(buildError))
{
// Загружаем текстуру (внимание: расширения не надо, путь уже указан, имя такое, как дали выше в параметре 2)
      Texture2D t = manager.Load<Texture2D>("Texture");
}
В исходном коде класс ContentBuilder складирует компилированные объекты во временной папке, затем удаляет ее. Я (закоментировав функции CreateTempDirectory в конструкторе и DeleteTempDirectory в деструкторе (ну и конечно предварительно указав buildDirectory = " нужная мне папка ") получил класс, который компилирует файлы и сохраняет их там, где мне надо. Т.е. можно сделать отдельный проект, где откомпилировать все нужные файлы, а потом уже просто их загружать в другом проекте, не заморачиваясь на класс ContentBuilder.

Возможно все это пустая трата времени, и лучше сделать все с помощью класса Game, но вот не лежит у меня душа к нему хочу сделать все по старинке: WindowsForms + Timer = Мелкая игра.

А ответ на поставленный мной вопрос №1 мне стоит проверить, но уже с помощью класса ContentBuilder, откомпилировав .fx файл, и передав конструктору Effect( GraphicsDevice, byte[] ) массив байт, выгруженных из откопилированного файла. Как сделаю, напишу результат, может кому понадобится. Ведь весь этот сыр-бор ради загрузки шейдеров из файлов =)
Вложения
Тип файла: rar ContentBuilder.rar (4.2 Кб, 16 просмотров)
0
24 / 24 / 1
Регистрация: 16.05.2012
Сообщений: 285
16.09.2012, 17:44
Помогите, не знаю, в чем проблема! Вообщем пытаюсь загрузить спрайт, но пишет при запуске, что не может найти файл! При указании полного адреса к ресурсу пишет что не может его открыть!

Вот код:


C#
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
//-------------------------------------Game1.cs----------------------------------------------------\\
using System; 
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
 
namespace WindowsGame6
{
 
    public class Game1 : Microsoft.Xna.Framework.Game
    {
        GraphicsDeviceManager graphics;
        SpriteBatch spriteBatch;
        sprites sprTexture;
        public Game1()
        {
            graphics = new GraphicsDeviceManager(this);
            sprTexture = new sprites();
            Content.RootDirectory = "Content";
        }
 
        protected override void Initialize()
        {
            base.Initialize();
        }
 
        protected override void LoadContent()
        {
            spriteBatch = new SpriteBatch(graphics.GraphicsDevice);
            sprTexture.LoadTexture(Content, "Тут произвольный путь");
        }
 
        protected override void UnloadContent()
        {
        }
 
        protected override void Update(GameTime gameTime)
        {
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
                this.Exit();
            base.Update(gameTime);
        }
 
 
        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);
            sprTexture.DrawTextures(spriteBatch);
            base.Draw(gameTime);
        }
    }
}
 
 
//---------------------------------sprites.cs----------------------------------------------------------\\
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
 
namespace WindowsGame6
{
    public class sprites
    {
        Texture2D SpriteTexture;
        public sprites()
        {
        }
 
        public void LoadTexture(ContentManager Content, String StringTexture)
        {
            SpriteTexture = Content.Load<Texture2D>(StringTexture);
        }
 
        public void DrawTextures(SpriteBatch spriteBatch)
        {
            spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend);
            spriteBatch.Draw(SpriteTexture, new Vector2(50, 50), Color.White);
            spriteBatch.End();
        }
    }
}
Добавлено через 3 часа 36 минут
Все, исправил!
0
Почетный модератор
 Аватар для Памирыч
23253 / 9167 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
16.09.2012, 19:18
Цитата Сообщение от WWWinplex Посмотреть сообщение
Все, исправил!
Расскажите. Кому-нибудь - пригодится
0
24 / 24 / 1
Регистрация: 16.05.2012
Сообщений: 285
16.09.2012, 19:34
Я погорячился - проблема все еще есть!

Работает код, указанный выше, но вот этот, без класса, не работает:
C#
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
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using System.IO;
 
namespace WindowsGame4
{
    /// <summary>
    /// This is the main type for your game
    /// </summary>
    public class Game1 : Microsoft.Xna.Framework.Game
    {
        GraphicsDeviceManager myGraphics;
        KeyboardState myKeyboardState;
        ContentManager content;
        Texture2D sprHero;
        Vector2 sprPOS;
        SpriteBatch mySpriteBatch;
        Sprite sprTexture;
        
        public Game1()
        {
            
            Window.Title = "myGam";
            Window.AllowUserResizing = true;
            myGraphics = new GraphicsDeviceManager(this);
            content = new ContentManager(Services);
            sprTexture = new Sprite();
            myGraphics.PreferredBackBufferHeight = 600;
            myGraphics.PreferredBackBufferWidth = 800;
            myGraphics.PreferMultiSampling = false;
            /*myGraphics.ToggleFullScreen();*/
            Content.RootDirectory = "Content";
        }
 
        /// <summary>
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content.  Calling base.Initialize will enumerate through any components
        /// and initialize them as well.
        /// </summary>
        protected override void Initialize()
        {
            // TODO: Add your initialization logic here
            sprPOS.X = Window.ClientBounds.Width / 2;
            sprPOS.Y = Window.ClientBounds.Height / 2;
            base.Initialize();
 
        }
 
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
 
                mySpriteBatch = new SpriteBatch(GraphicsDevice);
                sprHero = content.Load<Texture2D>("\\sprherofight");
      
            // TODO: use this.Content to load your game content here
        }
 
        /// <summary>
        /// UnloadContent will be called once per game and is the place to unload
        /// all content.
        /// </summary>
        protected override void UnloadContent()
        {
            // TODO: Unload any non ContentManager content here
        }
 
        /// <summary>
        /// Allows the game to run logic such as updating the world,
        /// checking for collisions, gathering input, and playing audio.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Update(GameTime gameTime)
        {
            // Allows the game to exit
            myKeyboardState = Keyboard.GetState();
            if (myKeyboardState.IsKeyDown(Keys.Escape))
                this.Exit();
 
            // TODO: Add your update logic here
 
            base.Update(gameTime);
        }
 
        /// <summary>
        /// This is called when the game should draw itself.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);
            mySpriteBatch.Begin(SpriteSortMode.Deferred,BlendState.AlphaBlend);
            mySpriteBatch.Draw(sprHero, sprPOS, Color.White);
            mySpriteBatch.End();
            // TODO: Add your drawing code here
 
            base.Draw(gameTime);
        }
    }
}
0
444 / 348 / 32
Регистрация: 16.10.2010
Сообщений: 842
Записей в блоге: 7
17.09.2012, 11:44
мэнэджэр так устроен, что путь который указываешь в Load<> уже включает путь до папки RootDirectory. если есть spheretofight, не входящий в папки, то и пиши content.Load<Texture2D>("spheretofight") ;
0
24 / 24 / 1
Регистрация: 16.05.2012
Сообщений: 285
17.09.2012, 21:50
Теперь пишет file not found...

Добавлено через 5 часов 49 минут
Просьба: не мог бы кто выложить папку с файлами проекта и загруженным изображением на примере моего кода, а то может, я и загружаю не так...
0
444 / 348 / 32
Регистрация: 16.10.2010
Сообщений: 842
Записей в блоге: 7
17.09.2012, 23:26
кинь сюда проект он же всё равно пустой почти
0
24 / 24 / 1
Регистрация: 16.05.2012
Сообщений: 285
18.09.2012, 15:58
Вот оно, оцени:
Вложения
Тип файла: rar WindowsGame4.rar (55.8 Кб, 13 просмотров)
0
444 / 348 / 32
Регистрация: 16.10.2010
Сообщений: 842
Записей в блоге: 7
18.09.2012, 16:33
На момент загрузки rootdirectory = "". Её надо было устанавливать в методе LoadContent и папку тоже в пути надо указывать WindowsGame4.rar и ещё вы удалили ссылку на контент проект, она тоже должна быть. чтобы при компиляции копировался контент в выходной каталог.
0
444 / 348 / 32
Регистрация: 16.10.2010
Сообщений: 842
Записей в блоге: 7
18.09.2012, 17:29
можно ещё разными способами, только rootdirectory нельзя будет изменить, поэтому можно даже указывать абсолютный путь наподобие "C:\"
C#
1
2
Content.RootDirectory = "Content\\NewFolder1";
SPRTEXT = Content.Load<Texture2D>("spr_hero_fight");
либо:
C#
1
2
Content.RootDirectory = "Content";
SPRTEXT = Content.Load<Texture2D>(@"NewFolder1\\spr_hero_fight");
1
to
19 / 19 / 2
Регистрация: 28.10.2010
Сообщений: 296
11.10.2012, 13:14
Добрый день уважаемые форумчане. Начал разбираться с XNA 4.0 читая при этом книгу по 3.0.
Возник такой вопрос, для того что бы загрузить файл эффект мне нужно создать ContentManager. Как эго создать?
делаю так :
C#
1
ContentManager manager=new ContentManager();
какой параметр передавать в конструктор???
Заранее благодарен

Добавлено через 1 минуту
и еще в 3.0 была структура CompiledEffect. как я понял в 4.0 ее нету. Чем ее заменить?
0
51 / 38 / 5
Регистрация: 14.01.2012
Сообщений: 127
12.10.2012, 12:45
Если создавать стандартное приложение XNA , то бишь с классом Game, то у Game есть свойство ContentManager, и нет проблем.
Если класса Game не предвидится то, могу посоветовать пример(в аттачах, в нете уже не нашел его), там вообще про XNA+WinForms, но как самому создавать ContentManager, без
Game есть.
Там в наследнике класса GraphicsDeviceControl пишешь:
C#
1
Content = new ContentManager(Services, "Content");
GraphicsDeviceControl предоставляет ServiceContainer Services, а дальше сложно. "Content" - название папки для ресурсов.
Вложения
Тип файла: zip WinFormsGraphicsSample_4_0.zip (141.3 Кб, 17 просмотров)
0
to
19 / 19 / 2
Регистрация: 28.10.2010
Сообщений: 296
17.12.2012, 14:27
Добрый день, уважаемые форумчане. Возник такой вопрос, если я рисую средствами XNA в своем UserControle. Рисуется все классно и быстро работает, но есть одно но! Я не могу ничего загрузить в проект потому как не знаю как на c# объявить ContentManager в классе с#.
Подскажите кто знает!

Добавлено через 1 час 24 минуты
Есть кто живой?
0
-4 / 0 / 1
Регистрация: 24.12.2011
Сообщений: 51
17.12.2012, 20:40
Немного непонял задачу... Уточни.

Не по теме:

Живых мало. Все готовятся к Апокалипсису

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

Отслеживание изменений URL на сайте с динамической загрузкой контента
Подскажите пожалуйста, как отслеживать изменения URL при динамической загрузке контента, реализованной с помощью AJAX.

Подскажите совет как разобраться с загрузкой разного контента
Имеется пункты меню &lt;MenuItem Header=&quot;База данных&quot;&gt; &lt;MenuItem Header=&quot;База птиц&quot; Command=&quot;{Binding...

Оптимизация и доработка выпадающего меню с загрузкой, посредством Ajax, контента
Всем добра. Делаю меню для сайта, вот сам код. &lt;ul class=&quot;sub-catalog&quot;&gt; &lt;li&gt; &lt;a class=&quot;category-item&quot;...

Проблемы с загрузкой
Здравствуйте. У меня есть такая проблема. Я установил Windows 8, перезагрузил, и тут же у меня начинает мерцать монитор, причем в такт с...

Проблемы с загрузкой HDD
Ребутнул ноут на днях, теперь не грузит систему с диска. БИОС определяет веник все как надо быть, однако при попСьытке загрузить О -...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru