Ошибка загрузки архива файлов двоичного кода black desert

Персональный сайт Дмитрия Салтаева

Решение распространённых проблем с обновлением и запуском клиента

Black Desert от Pearl Abyss

Не все из перечисленных методов помогут решить Вашу проблему, но возможно какой-то из них подойдёт. Если совсем ничего не помогло в решении проблемы, то напишите в Вконтакте, попробуем разобраться и дополнить список. Удачи!

Все из перечисленных методов следует пробовать на закрытом лаунчере, отключенном антивирусном ПО и брандмауэром (либо с добавлением лаунчера в список исключений)

Ошибка обновления клиента (лаунчер прерывает загрузку обновлений с сообщением об ошибке, загрузка обновлений остановилась на 0%, ошибка загрузки двоичного кода, ошибка распаковки пакета обновлений, при запуске лаунчера появляется окно с сообщением об ошибке и лаунчер закрывается, не запускается лаунчер после нажатия по ярлыку, проверка файлов в лаунчере прерывается с сообщением об ошибке).

  • Публичные DNS-сервера

Инструкцию по настройке для Вашей операционной системы можно найти по ссылке: https://www.comss.ru/page.php?id=754

  • Очистка кеша DNS

Windows 10

1. Удерживая клавишу Windows, нажмите клавишу X.

2. Выберите пункт Командная строка (администратор).

Windows 7/8

1. Удерживая клавишу Windows, нажмите клавишу R. (Запустится диалоговое окно «Выполнить».)

2. Введите cmd и нажмите Enter (после этого появится командная строка).

3. В командной строке введите ipconfig /flushdns и нажмите клавишу Enter.

4. Введите ipconfig /registerdns и нажмите Enter.

5. Введите ipconfig /release и нажмите Enter.

6. Введите ipconfig /renew и нажмите Enter.

7. Введите netsh winsock reset и нажмите Enter.

8. Перезагрузите компьютер.

  • Изменение атрибутов на папке с игрой 

 На папке с игрой нажимаем ПКМ, снимаем галочку на пункте «Только чтение», нажимаем «Применить», далее «Ок»

  • Изменение прав доступа на папке с игрой

На папке с игрой нажимаем ПКМ, выбираем Свойства, далее выбираем раздел «Безопасность», в этом разделе даём всем группам и пользователям полный доступ. Для этого выбираем группу или пользователя, жмём «Изменить», выставляем галочку на «Полный доступ» в разделе «Разрешить», нажимаем «Применить», затем «Ок».

  • Запуск лаунчера от имени администратора

По ярлыку игры нажимаем ПКМ, из выпадающего меню выбираем пункт «Запуск от имени администратора» (подтверждаем нажатием «Ок» если это потребуется)

  • Удаление файла pad00000.meta

В папке с игрой открываем папку Paz, находим и удаляем файл pad00000.meta, затем запускаем лаунчер и начинаем проверку файлов

  • Синхронизация времени с интернетом
  • Кириллица в пути расположения клиента

Пробуем перенести клиент в путь без содержания кириллицы.

C:/PearlAbyss  —  без кириллицы

C:/Игры/PearlAbyss  —  с кириллицей

  • Удаление временных файлов

Открываем папку с игрой, включаем отображение скрытых файлов и папок, удаляем папку patch_temp и файл csvi.

  • Путь установки по умолчанию

Перенести клиент в путь установки по умолчанию C:PearlabyssBlackDesert

  • Отключение брандмауэра или добавление клиента в исключения 

Инструкцию Вы можете увидеть тут

  • Обновление/переустановка драйверов на сетевой адаптер

На сайте производителя своей материнской платы найдите последние по дате выпуска драйвера сетевого адаптера, скачайте, а затем установите

  • Отключение антивирусного ПО

Временно отключите антивирусное ПО/защитник Windows. 

Инструкцию по отключению защитника Windows Вы можете увидеть тут

  • Чистая загрузка Windows 

Инструкцию для своей версии Windows Вы можете найти тут

  • Наличие свободного места на диске с установленной игрой

Для корректного обновления клиента игры требуется не менее 31ГБ свободного места

  • Обновление зависло на отметке 3%

Клиент игры загружает файлы. Как только они будут загружены он начнёт распаковку и прогресс отобразится на шкале

Клиент игры не запускается после нажатия кнопки «Начало игры»  (клиент вылетает на заставке, клиент вылетает во время игры)

  • Обновление операционной системы
  • Проверка наличия файла languagedata_ru.loc

В папке с игрой открываем папку ads, проверяем наличие файла languagedata_ru.loc. Если данный файл отсутствует, выполните проверку файлов клиента

  • Обновление пакета Microsoft Visual C++

Пакет обновлений можно скачать по ссылке — http://forum.oszone.net/thread-145766.html 

  • Обновление драйверов на видеокарту

Загрузить последние драйвера на Вашу видеокарту можно по ссылкам: AMD | NVIDIA

  • Поиск «битых» файлов в логах игры

В папке с игрой открываем папку Log, открываем самый последний файл с именем Client_**************. Проматываем его в самый низ и смотрим наличие такой строки:

0x2758-00-5 eErrNoErrorHappen(Возникла ошибка!): 패키지 압축해제시 오류 발생했습니다: c:/pearlabyss/blackdesert/Paz/PAD02039.PAZ

(c:/pearlabyss/blackdesert/MapData_real/SectorMapInfo_Combine/34_7_0.combine), (0/465998) 

(путь будет указан ваш)

Обычно она самая последняя. В ней указан повреждённый файл, в данном случае это PAD02039.PAZ. Проверка файлов клиента в лаунчере исправляет проблему, но это занимает большое количество времени. Замену файла от заведомо работающей версии клиента, можно попросить у знакомых или написать мне в Вконтакте (:

  • Изменение разрядности клиента

Открываем настройки лаунчера и в разделе «Режим игры» меняем значение от установленного ранее

  • Проверка исправности термоинтерфейса

Перегрев процессора, видеокарты или отдельных компонентов ПК может привести к нестабильной работе клиента игры, его вылетам, дисконнектам. Инструкция по различным методам проверки тут

  • Отключение полноэкранной оптимизации (ошибка bad_module_info)

Инструкцию Вы можете увидеть тут

  • Чистая загрузка Windows 

Инструкцию для своей версии Windows Вы можете найти тут

  • Создание новой учётной записи Windows

Создаём учётную запись без содержания кириллицы, затем пробуем запустить клиент
Инструкция по созданию учётной записи для Вашей версии Windows находится 
тут

  • Сброс настроек клиента по умолчанию

В папке «Мои документы» открываем папку «Black Desert», удаляем файл GameOption.txt

Сообщается, что некоторые игроки Black Desert Online получают «Код ошибки 10» в ту минуту, когда запускают клиент и вводят свое имя пользователя и пароль. В этом случае сообщается, что эта проблема возникает у пользователей, запускающих игру через Steam.

После исследования этой конкретной проблемы выясняется, что существует несколько различных основных причин, которые могут вызвать код ошибки 10 с BlackDesert Online. Вот список потенциальных виновников этого кода ошибки:

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

Метод 1: запустите Steam от имени администратора

Одним из наиболее распространенных случаев, когда в BlackDesert Online запускается код ошибки 10, является проблема с разрешением. Эту ошибку нередко можно увидеть, если из-за отсутствия разрешений игра не может передать информацию, необходимую для определенных зависимостей.

Несколько затронутых пользователей, столкнувшихся с той же проблемой, сообщили, что им наконец удалось решить проблему после принудительного открытия основного исполняемого файла Steam с правами администратора.

Для этого все, что вам нужно сделать, это щелкнуть правой кнопкой мыши исполняемый файл Stream внутри папки, в которую вы его установили (или вы можете просто щелкнуть правой кнопкой мыши исполняемый файл) и выбрать Запуск от имени администратора во вновь появившемся контекстном меню.

Когда появится запрос UAC (Контроль учетных записей пользователей), нажмите Да, чтобы предоставить доступ администратора.

Запуск Steam от имени администратора

Как только вы это сделаете, запустите BlackDesert Online через Steam и посмотрите, решена ли проблема.

Если проблема решена и вы не хотите выполнять описанные выше действия каждый раз, когда вам нужно открыть игру, следуйте приведенным ниже инструкциям, чтобы заставить вашу ОС открывать этот исполняемый файл с правами администратора каждый раз, когда вам нужно открывать Steam:

Если повторная настройка Steam для открытия с правами администратора не позволила вам решить проблему с BlackDesert Online, перейдите к следующему потенциальному исправлению ниже.

Метод 2: создание файла Launch. bat

Это исправление было подтверждено множеством пользователей, которые сталкивались с той же проблемой.

Если вы хотите развернуть это конкретное исправление, следуйте приведенным ниже инструкциям, чтобы создать файл launch. bat для вашей установки Black Desert Online, чтобы исправить код ошибки 10:

Если проблема не устранена, перейдите к следующему потенциальному исправлению ниже.

Метод 3: проверка целостности (только Steam)

Если вы запускаете игру через Steam, также возможно, что эта ошибка возникает из-за какого-либо повреждения, которое влияет на локальную папку установки Black Desert Online.

Если этот сценарий применим к вашей текущей ситуации, вы продолжите, запустив проверку целостности в установке Black Desert Online Steam – в случае, если сканирование выявит несоответствие, оно автоматически заменит поврежденные файлы на исправные эквиваленты.

Если вы еще не инициировали проверку целостности, следуйте приведенным ниже инструкциям для получения пошаговых инструкций о том, как это сделать:

Как только ваш компьютер загрузится, снова запустите Black Desert Online и посмотрите, решена ли проблема.

Если вы не запускаете игру через Steam, перейдите к следующему потенциальному исправлению ниже.

Метод 4: установка последней версии Black Desert Online

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

Некоторые пользователи сообщают, что в их случае код ошибки 10 возник из-за того, что текущая игровая сборка Black Desert, которую они пытались запустить, устарела.

Если этот сценарий применим к вашей текущей ситуации, вы сможете решить проблему, удалив текущую версию игры перед переустановкой последней сборки с официальных каналов.

Вот пошаговая инструкция, как это сделать:

Решение всех ошибок unarc. dll

Unarc. dll — файл который отвечает за процесс распаковки архивов. Взаимодействует с системой и позволяет более быстро производить процесс, взаимодействует более эффективно с центральным процессором. Обычно в ходе работы возникают сложности и проблемы.

В этой статье мы рассмотрим различные проблемы и ошибки, которые влияют на работу unarc. dll

Ошибка 11 гласит о том, что архив который был скачан, нужно проверить контрольной суммой перед запуском. Данная цифра говорить нам о том, какие файлы и сколько были заложены в архив. Если она не совпадает, то мы получим 11 ошибку unarc. dll файла.

Обновите хеш торрент файла — если файл был скачан с его помощью. Обязательно проверьте хеш-сумму на сайте где производили скачку.

Обычно 11 ошибка связана с невозможностью записи данных на диск. Он может быть переполнен или недоступен для записи в данный момент.

Решение всех ошибок unarc. dll

В случае ошибки 12 как и в 11 проблемой всему является хеш-сумма. Но в данном случае, unarc. dll ругается на принудительное изменение целостности архива и самого файла который в данный момент задействован.

Решение всех ошибок unarc. dll

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

Если unarc. dll вернул код ошибки 2 — это означает, что архив поврежден. Нарушение целостности могло возникнуть при совместном использовании определенных секторов установки.

Решение всех ошибок unarc. dll

Если при установке игры вы получили ошибку 6 — это означает, что в самом процессе установки была нарушена или удалена часть архива. Делается это как самой системой так и инсталлером для освобождения ресурсов.

13 ошибка возникает при нарушении архива путём его изменения в живом режиме. При самой установке, инсталлер пытается заменить некоторые элементы в файлах, что изменяет их контрольную сумму.

Сделать с этим практически ничего нельзя, т. к. изменения вшиты в сам процесс установки. Но решение ошибки может быть связано с перекешированием активного торрета.

При ошибки с номером 3 — следует запустить установщик в режиме администратора. Некоторые процедуры (такие как занесение в реестр) должны получить определенный доступ. Архиватор не может этого сделать — если установлено ограничение на права пользователя.

Если на экране при распаковке или установке игры или приложения возникает ошибка unarc. dll с кодом 4 — это означает, что архив был либо недокачан, либо при проверке антивирусом из него были удалены вредоносные (или небезопасные) компоненты.

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

Решение всех ошибок unarc. dll

Ошибка с номером 7 — означает, что архив был поврежден или не был полностью скачан. Вам следует проверить целостность архива.

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

Решение всех ошибок unarc. dll

Самая базовая ошибка под номером — 1. В данном случае unarc. dll не может определить какого рода проблема, поэтому вам следует сделать все возможные варианты для решения.

Где находится файл unarc. dll

Расположения файла unarc. dll доступно для пользователей с правами администратора. Этот системный файл, он обозначен антивирусами как — безопасный.

Файл находится по пути С:/Windows/system32/unarc. dll. Там же находится его компонент isdone. dll.

Различаются ли версии unarc. dll для х86 (х32) и для х64?

На самом деле отличия минимальны. Сама структура системы которая отвечает за распаковку может работать в двух режимах — х86 и х64. В зависимости от операционной системы могут применяться и различные (подходящие по структуре) алгоритмы распаковки архива.

Если Вы скачиваете файлы для замены, то обязательно соблюдайте разрядность.

Ошибка failder CRC check ISDone. dll

Как компонент unarc — файл ISDone. dll — так же помогает в распаковке файлов их хранит в себе завершающую стадию структуры алгоритма.

Если Вы видите эту ошибку, то наверняка процесс распаковки был прерван. Обычно это связано со звуковыми файлами которые при создании контрольной суммы могут различаться. Решение тут простое — перекачайте архив или обновите хеш-сумму.

ERROR: archive data corrupted (decompression fails)

Базовая ошибка которая возникает в любого рода проблемах unarc. Она создана для оповещения пользователя о недоступности архива с которым производятся различные действия.

В зависимости от кода ошибки он трактовка его будет разной. Попробуйте найти решение согласно возвращенного кода ошибки.

Источники:

https://ddok. ru/kak-ispravit-kod-oshibki-10-v-black-desert-online/

https://marmok. ru/interesnoe/reshenie-vseh-oshibok-unarc-dll/

Статус темы:

Закрыта.

  1. Himik466

    Himik466
    User

    Регистрация:
    29.11.21
    Сообщения:
    1
    Симпатии:
    0

    Появилась проблема при попытке скачать игру BDO.Ошибка 200. Загрузка начиналась с 10%, либо доходила до 10 и вылетала ошибка. Спасибо тех поддержке, помогли. Вот какие действия были проведены.
    Сперва
    Деинсталлируем приложение Фогейм. Панель Управления ==> Программы и Компоненты
    Через консоль (Win+R) — Вводим %temp% и удаляем все, что там удаляется.
    Проверяем, что ничего нет в папке С:Program Files (x86)Innova если что-то есть — удаляем.
    Снова в консоль (Win+R) вводим %userprofile%AppDataLocalInnova_Co._SARL и удаляем все, что там есть
    Перезагружаем ПК.
    Устанавливаем последнюю версию лаунчера, скачав его отсюда https://ru.4game.com/.
    Путь установки указываем в пустую папку
    Пробуем
    Если не помогло. Возможно проблема с сетью. Ставим приложение https://1.1.1.1/, это почти впн, он меняет трассу, запускаем его и попробуем установить игру. Мне помогло, проблема ушла

  2. Тема устарела и была перемещена в архив. Если проблема не была решена, обратитесь в Службу поддержки (https://ru.4gamesupport.com/).

Статус темы:

Закрыта.

Milipops

0 / 0 / 2

Регистрация: 06.02.2015

Сообщений: 67

1

Ошибка загрузки данных из двоичного файла

04.11.2017, 16:30. Показов 1873. Ответов 10

Метки нет (Все метки)


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

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
#include <iostream>
#include "Teacher.h"
#include "AssistProfessor.h"
#define fileName "data.dat"
#define fName "result.txt"
 
void printResult(string filename)
{
    string line;
    ifstream myfile (filename.c_str());
    if (myfile.is_open())
    {
            while (! myfile.eof() )
            {
                getline (myfile,line);
                cout << line << endl;
            }
        myfile.close();
    }
}
 
int main()
{
    int switcher = 0;
    int s = 0;
    Teacher*teacher = new Teacher();
    Teacher*teach = NULL;
    AssistProfessor*assist = new AssistProfessor();
    string name = "";
    string surname = "";
    string patronymic = "";
    int np = 0;
    int year_of_start = 0;
    double oklad = 0;
    double dopyears = 0;
    bool vchzv = false;
    bool naukstup = false;
    double vidpustka = 0;
    double mathelp = 0;
    double nadbavka = 0;
    cout << "Choose operation?n1 - Createt2 - Loadt3 - Show all" << endl;
    cout << "Enter your choice: ";
    cin >> switcher;
    switch(switcher)
    {
    case 1:
        switcher = 0;
        cout << endl;
        cout << "Teacher or Assist?n1 - Teachert2 - Assist" << endl;
        cout << "Enter your choice: ";
        cin >> switcher;
        switch(switcher)
        {
            case 1:
                s = 0;
                cout << endl << "Enter surname: "; cin >> surname; teacher->setSurname(surname);
                cout << "Enter name: "; cin >> name; teacher->setName(name);
                cout << "Enter patronymic: "; cin >> patronymic; teacher->setPatronymic(patronymic);
                cout << "Enter number: "; cin >> np; teacher->setNp(np);
                cout << "Enter year of start: "; cin >> year_of_start; teacher->setYear_of_start(year_of_start);
                cout << "Surcharge: " << teacher->getDopyears() << endl; dopyears = teacher->getDopyears();
                cout << "Enter salary: "; cin >> oklad; teacher->setOklad(oklad);
                teacher->fullOklad->setOklad(oklad);
                teacher->fullOklad->setDopyears(dopyears);
                cout << "Enter vacation pay: "; cin >> vidpustka; teacher->setVidpustka(vidpustka);
                cout << "Enter material aid: "; cin >> mathelp; teacher->setMathelp(mathelp);
                cout << "Enter premium: "; cin >> nadbavka; teacher->setNadbavka(nadbavka);
                cout << "Salary without tax: " << oklad - teacher->fullOklad->getClearOklad() << endl;
                teacher->saveResult(fName);
                cout << endl<< "Save to bin file? 1 - yes; 0 - no: " ; cin >> s;
                teacher->saveToFile(fileName);
                break;
            case 2:
                s = 0;
                cout << endl << "Enter surname: "; cin >> surname; assist->setSurname(surname);
                cout << "Enter name: "; cin >> name; assist->setName(name);
                cout << "Enter patronymic: "; cin >> patronymic; assist->setPatronymic(patronymic);
                cout << "Enter number: "; cin >> np; assist->setNp(np);
                cout << "Enter year of start: "; cin >> year_of_start; assist->setYear_of_start(year_of_start);
                cout << "Surcharge: " << assist->getDopyears() << endl; dopyears = assist->getDopyears();
                cout << "Enter salary: "; cin >> oklad; assist->setOklad(oklad);
                assist->fullOklad->setOklad(oklad);
                assist->fullOklad->setDopyears(dopyears);
                cout << "Enter vacation pay: "; cin >> vidpustka; assist->setVidpustka(vidpustka);
                cout << "Enter material aid: "; cin >> mathelp; assist->setMathelp(mathelp);
                cout << "Enter premium: "; cin >> nadbavka; assist->setNadbavka(nadbavka);
                cout << "Has Science Degree ? 1 - yes; 0 - no: ";cin >> vchzv; assist->setIsScienceDegree(vchzv);
                cout << "Is Assist Professor ? 1 - yes; 0 - no: ";cin >> naukstup; assist->setIsAssistProfessor(naukstup);
                cout << "Salary without tax: " << oklad - assist->calculate() << endl;
                assist->saveResult(fName);
                break;
            default:
                cout << "Wrong choice.";
        }
        break;
    case 2:
        teach->loadFromFile(fileName);
        teach->print();
        break;
    case 3:
        printResult(fName);
        break;
    default:
        cout << "Wrong choice.";
    }
    return 0;
}

Функции ввода и вывода

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
bool Teacher::loadFromFile(string filename)
{
    bool res = false;
    ifstream fBinIn(filename.c_str(),ios::binary);
        if(fBinIn.is_open())
        {
                fBinIn.read((char*)&surname, sizeof(surname));
                fBinIn.read((char*)&name, sizeof(name));
                fBinIn.read((char*)&patronymic, sizeof(patronymic));
                fBinIn.read((char*)&np, sizeof(np));
                fBinIn.read((char*)&year_of_start, sizeof(year_of_start));
                fBinIn.read((char*)&oklad, sizeof(oklad));
                fBinIn.read((char*)&dopyears, sizeof(dopyears));
                fBinIn.read((char*)&vidpustka, sizeof(vidpustka));
                fBinIn.read((char*)&mathelp, sizeof(mathelp));
                fBinIn.read((char*)&nadbavka, sizeof(nadbavka));
        }
            fBinIn.close();
            res = true;
    return res;
}
 
bool Teacher::saveToFile(string fileName) const
{
    bool res = false;
    ofstream fBinOut(fileName.c_str(),ios::binary);
        if(fBinOut.is_open())
        {
            fBinOut.write((const char*)&surname, sizeof(surname));
            fBinOut.write((const char*)&name, sizeof(name));
            fBinOut.write((const char*)&patronymic, sizeof(patronymic));
            fBinOut.write((const char*)&np, sizeof(np));
            fBinOut.write((const char*)&year_of_start, sizeof(year_of_start));
            fBinOut.write((const char*)&oklad, sizeof(oklad));
            fBinOut.write((const char*)&dopyears, sizeof(dopyears));
            fBinOut.write((const char*)&vidpustka, sizeof(vidpustka));
            fBinOut.write((const char*)&mathelp, sizeof(mathelp));
            fBinOut.write((const char*)&nadbavka, sizeof(nadbavka));
            fBinOut.close();
            res = true;
        }
    return res;
}

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



3986 / 3255 / 910

Регистрация: 25.03.2012

Сообщений: 12,114

Записей в блоге: 1

04.11.2017, 16:36

2

Milipops, Milipops, ну все верно. После выхода из switch функция main заканчивается. А разве не должна?



0



3433 / 2812 / 1249

Регистрация: 29.01.2016

Сообщений: 9,426

04.11.2017, 16:47

3

Класс покажи.

Добавлено через 5 минут
Есть подозрение, что там поля std::string, для которых не годятся (без сериализации) бинарные методы чтения/записи.



0



Milipops

0 / 0 / 2

Регистрация: 06.02.2015

Сообщений: 67

04.11.2017, 16:55

 [ТС]

4

Kuzia domovenok, Она крашается, не выводя результат из объекта

Добавлено через 2 минуты
nd2, через стринг Name, Surname, Patronymic

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
#ifndef TEACHER_H
#define TEACHER_H
#include <iostream>
#include <cmath>
#include <string>
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
 
 
 
class Tax
{
    public:
        Tax();
        void countClearOklad();
        void setOklad(double Oklad);
        void setDopyears(double Dopyears);
        double getOklad() const;
        double getClearOklad();
        virtual ~Tax();
    protected:
        double oklad;
        double clearOklad;
        double dopyears;
};
 
class Teacher
{
    public:
        Teacher();
        Tax * fullOklad;
        void setSurname(string surname);
        void setName(string n);
        void setPatronymic(string patr);
        void setNp(int number);
        void setYear_of_start(int year);
        void setOklad(double okl);
        void setDopyears(double dop);
        void setVidpustka(double vidp);
        void setMathelp(double math);
        void setNadbavka(double nadb);
        void setCount(int count);
        string getSurname() const;
        string getName() const;
        string getPatronymic() const;
        int getNp() const;
        int getYear_of_start() const;
        double getOklad() const;
        double getDopyears() const;
        double getVidpustka() const;
        double getMathelp() const;
        double getNadbavka() const;
        virtual double calculate();
        bool saveToFile(string filename) const;
        bool loadFromFile(string filename);
        virtual void print() const;
        friend class Tax;
        virtual bool saveResult(string fileName) const;
        virtual ~Teacher();
    protected:
        string surname;
        string name;
        string patronymic;
        int np;
        int year_of_start;
        double oklad;
        double dopyears;
        double vidpustka;
        double mathelp;
        double nadbavka;
    private:
};
 
 
#endif // TEACHER_H



0



3433 / 2812 / 1249

Регистрация: 29.01.2016

Сообщений: 9,426

04.11.2017, 16:59

5

Цитата
Сообщение от Milipops
Посмотреть сообщение

стринг Name, Surname, Patronymic

Цитата
Сообщение от nd2
Посмотреть сообщение

поля std::string, для которых не годятся (без сериализации) бинарные методы чтения/записи.



0



Milipops

0 / 0 / 2

Регистрация: 06.02.2015

Сообщений: 67

04.11.2017, 17:17

 [ТС]

6

nd2, оно работает, если перед загрузкой сохранить файл, но если сразу загружать, то крашается

C++
1
2
3
4
5
 case 2:
        teacher->saveToFile(fileName);
        teach->loadFromFile(fileName);
        teach->print();
        break;



0



3433 / 2812 / 1249

Регистрация: 29.01.2016

Сообщений: 9,426

04.11.2017, 17:20

7

Цитата
Сообщение от Milipops
Посмотреть сообщение

оно работает, если перед загрузкой сохранить файл, но если сразу загружать, то крашается

Ещё раз:

Цитата
Сообщение от nd2
Посмотреть сообщение

поля std::string, для которых не годятся (без сериализации) бинарные методы чтения/записи.



0



0 / 0 / 2

Регистрация: 06.02.2015

Сообщений: 67

04.11.2017, 17:23

 [ТС]

8

nd2, с помощью чего можно выполнить сериализацию? Или какие методы можно использовать?



0



Kuzia domovenok

3986 / 3255 / 910

Регистрация: 25.03.2012

Сообщений: 12,114

Записей в блоге: 1

04.11.2017, 17:29

9

nd2, истину глаголит читайте- пишите стринги в 2 этапа

C++
1
2
3
4
5
int strsize; 
file.read(&strsize, sizeof(strsize) );
 
name.resize(strsize);
file.read(&name[0], strsize);

Добавлено через 1 минуту
То есть в двоичном файле перед каждой строкой нужно не забыть записать инт



1



nd2

3433 / 2812 / 1249

Регистрация: 29.01.2016

Сообщений: 9,426

04.11.2017, 19:25

10

Лучший ответ Сообщение было отмечено Milipops как решение

Решение

Цитата
Сообщение от Milipops
Посмотреть сообщение

Или какие методы можно использовать?

Текстовые, или си-строки используй.

Цитата
Сообщение от Milipops
Посмотреть сообщение

с помощью чего можно выполнить сериализацию?

Поиск по форуму используй, здесь были примеры. Приду домой — выложу пример.

Добавлено через 1 час 17 минут

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    string str("Hello, world!");
    ofstream fout("string_bin", ios::binary);
    size_t n = str.size();
    fout.write((const char*)&n, sizeof(n)); // пишем в файл размер строки
    fout.write(str.c_str(), n); // пишем в файл строку
    fout.close();
    
    ifstream fin("string_bin", ios::binary);
    if (fin)
    {
        n = 0;
        string s;
        fin.read((char*)&n, sizeof(n)); // читаем из файла размер записанной строки
        s.resize(n); // выделяем память нужного размера
        fin.read(&s[0], n); // читаем строку из файла
        fin.close();
    }
    else
        cout << "Error opening file!" << endl;



1



0 / 0 / 2

Регистрация: 06.02.2015

Сообщений: 67

04.11.2017, 23:19

 [ТС]

11

nd2, спасибо большое

Добавлено через 3 часа 40 минут
nd2, все получилось и заработало, еще раз огромное спасибо



0



Понравилась статья? Поделить с друзьями:
  • Ошибка загрузки андроид яндекс браузер
  • Ошибка еа на котле бош 6000 как исправить ошибку
  • Ошибка загрузки idb
  • Ошибка загрузки windows 10 0xc0000225
  • Ошибка еа на котле бош 2000 как сбросить