Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для Ayerice
1 / 1 / 1
Регистрация: 09.05.2014
Сообщений: 13

Сохранение массива для последующих запусков программы

01.04.2015, 18:35. Показов 892. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сделал программу, которая строит расписания обработки деталей на станках: считываются исходные данные, которые по нажатию кнопки на форме обрабатываются генетическим алгоритмом. ГА формирует одномерный массив Operations экземпляров класса Op. Далее на основе этого массива на второй вкладке формы строится диаграмма Ганта.

Проблема в следующем - есть необходимость обеспечить необходимость редактировать полученное расписание в дальнейшем после закрытия и перезапуска программы (поступила новая деталь, сломался станок и т.п.). То есть, условно, массив Operations, сформированный в результате запуска программы 1 мая, должен быть доступен для подгрузки в программу 3 мая, для чего его нужно как-то сохранить. Как это можно реализовать?

Описание класса ниже.

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
class Op // класс операций
{
public:
    USI     getjob()  const     { return jobnum; }
    USI     getpos()  const     { return position; }
    USI     getmach() const     { return machine; }
    float   gettime() const     { return optime; }
    void setjob(USI job)        { jobnum = job; }
    void setpos(USI pos)        { position = pos; }
    void setmach(USI mach)      { machine = mach; }
    void settime(float time)    { optime = time; }
 
    USI     getmachused()   const        { return machineused; }
    float   getstart()      const        { return starttime; }
    void    setmachused(USI machine)     { machineused = machine; }
    void    setstart(float time)         { starttime = time; }
 
    bool    getservice()    const        { return instantservice; }
    void    setservice(bool service)     { instantservice = service; }
    
    
private:
    USI     jobnum; //  Номер требования, в которое входит операция
    USI     position; // Порядок операции в требовании
    USI     machine; // Тип станка, на котором выполняется операция
    float   optime; // Время выполнения операции
 
    USI     machineused; //  Номер конкретной используемой машины в машинном списке
    float   starttime;  // Время начала операции
 
    bool instantservice; // Определяет, есть ли простой машины перед обработкой данной операции
};
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.04.2015, 18:35
Ответы с готовыми решениями:

Как запомнить админские права для дальнейших запусков программы
как запомнить админские права для дальнейших запусков? есть прога(без установки), в ней манифест с известным ...

Сохранение состояния приложения с целью экономии времени при последующих запусках
Всем привет. Появился небольшой вопрос. Допустим я запустил какое-то приложение, оно загрузилось и я его настроил. Весь процесс запуска и...

Ограничение количества запусков программы
Здравствуйте форумчане, хотел спросить у вас, не подскажите, почему у меня не работает код, или можете посоветовать более эффективный ...

4
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
01.04.2015, 18:47
Цитата Сообщение от Ayerice Посмотреть сообщение
Как это можно реализовать?
Записать в файл массив объектов класса:
C++
1
2
3
4
5
    const int N = 10;
    Op arr[N];
    //.....
    ofstream fin("filename", ios::binary);
    fin.write((const char*)arr, sizeof(Op) * N);
1
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
01.04.2015, 18:50
Цитата Сообщение от Ayerice Посмотреть сообщение
Как это можно реализовать?
Записью в БД, сохранением в файл
0
 Аватар для Ayerice
1 / 1 / 1
Регистрация: 09.05.2014
Сообщений: 13
20.04.2015, 20:26  [ТС]
Спасибо за помощь, только теперь встал вопрос о том, как это реализовать не через консоль, а через форму.
То есть написать обработчик событий на клик по кнопке, что-то вроде этого:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private: System::Void saveschmenu_Click(System::Object^  sender, System::EventArgs^  e) 
{
    extern Op * Operations;
SaveFileDialog^ save_dial = gcnew SaveFileDialog;
        save_dial->InitialDirectory = "C:\ Schedules";
        save_dial->DefaultExt = "*.";
        save_dial->Filter = "Бинарный файл|*.";
        save_dial->RestoreDirectory = true;
        save_dial->ShowDialog();
 
        if (save_dial->ShowDialog() == System::Windows::Forms::DialogResult::OK && save_dial->FileName->Length > 0)
        {
            String^ binary_file_name = save_dial->FileName;
            System::IO::File::WriteAllBytes(binary_file_name, ???);
        }
Здесь не знаю, как передать байтовое значение массива во второй аргумент. А может, вообще не туда копаю. Вы не в курсе, как это можно выполнить?
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
20.04.2015, 20:30
Цитата Сообщение от Ayerice Посмотреть сообщение
Вы не в курсе, как это можно выполнить?
Я не в курсе потому, что это не С++.

Добавлено через 1 минуту
https://www.cyberforum.ru/cpp-cli-winforms/
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.04.2015, 20:30
Помогаю со студенческими работами здесь

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

Ограничить количество запусков программы
Как Ограничить количество запусков программы? БД Access. Нужно сделать так чтобы одновременно могли работать максимум 5 пользователей....

посчитать количество запусков программы
Помогите, пожалуйста) Нужно подсчитать и вывести количество запусков формы ( то есть самой программы) , например в поле memo1.

Узнать количество запусков программы
Возможно ли посчитать сколько ли раз запущена программа. Сразу скажу вариант: запуск программы, добавляем 1-ку в файл мне не подойдет. ...

Ограничить количество запусков программы
Здравствуйте, написал программу, и теперь хочу сделать так, чтобы можно было без ввода регистрационного ключа запускать ее только 3 раза. ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru