Форум программистов, компьютерный форум, киберфорум
Наши страницы

Запись и извлечение данных в несколько запусков программы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Неточность в понимании условия задачи "Жук" (acmp) http://www.cyberforum.ru/cpp-beginners/thread930617.html
Жук (Время: 1 сек. Память: 16 Мб Сложность: 30%) Петя нашел в Интернете по адресу http://buglab.ru игру-головоломку "Жук", в которой от участников требуется построить для жука лабиринт таким...
C++ Логика switch Программа должна расчитывать количество проданного товара, суть проблемы, кода вместо численных значений в вариантах case я использую буквенные значения названий товара, то все идет по логике... http://www.cyberforum.ru/cpp-beginners/thread930602.html
Мини-брутфорс C++
Задан паттерн XXyyX, где Х может принимать следующие значения: D,J,K,L,L,X,Z, а Y - f,n,s. Необходимо найти все возможные комбинации, при этом символы не должны повторяться, кроме L, так как он...
Структуры. Объединения. Битовые поля C++
Помогите с двумя простенькими программами. Требования: - не использовать шаблоны; - интерфейс должен разработан для неопытного пользователя; - размерность массива - неопределенная; - не...
C++ Си: Выдать слова текста и их длины, Сформировать новую строку по правилу http://www.cyberforum.ru/cpp-beginners/thread930563.html
Задание: Задан некоторый текст, состоящий из слов. Словом считать последовательность символов, не содержащую пробел или другие знаки препинания. Предложения заканчиваются точкой. Длина текста не...
C++ Вместо результата выводит непонятное число Сделал программу которая должна высчитывать по формуле, но она высчитывает не совсем то число. int chislo = Convert::ToInt32(textBox2->Text); int *chisla = new int; int lolx =... подробнее

Показать сообщение отдельно
ArkTaS
1 / 1 / 0
Регистрация: 01.07.2013
Сообщений: 127
30.07.2013, 13:44  [ТС]
Цитата Сообщение от Fyret Посмотреть сообщение
Чтобы сдвинуть позицию чтения в inf. Ночью написал первое, что в голову пришло, правильнее так:
C++
1
inf.seekg( sizeof(void*), inf.cur );



Потому и не помогло, что позиция чтения не сдвигается.

Добавлено через 5 минут


Если нет нужды накапливать в файле записи ото всех вызовов программы, то и ios::app не нужен.

И, отдельно, всем, у кого работает оригинальная код, - просто повезло. Он не должен работать.
Спасибо большое, клацнул бы кнопку если бы она была )) работает как нужно, теперь осталось осмыслить. НА сколько я понял.
C++
1
inf.seekg(sizeof(void*), inf.cur );
каждый раз перед извлечением объекта сдвигает указатель чтения относительно его текущей позиции на расстояние размера указателя на таблицу вирт. функций ? Не подозревал что void* - 4 байта и что это тип указателя на табл. вирт. функций ?!
Далее
C++
1
inf.read((char*)arrap[n]+sizeof(void*), size-sizeof(void*));
Тут понятно что размер объекта для считывания нужно уменьшить на размер этого указателя на табл. size-sizeof(void*)
(char*)arrap[n]+sizeof(void*) Здесь мы сдвигаем указатель для того что бы потом в методе employee::display не биться головой о стену при попытке выполнить команды обращения по этому адресу
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void employee::display()
{
for(int j = 0; j < n; j++)
{
cout << (j + 1); // вывести номер
switch(arrap[j]->get_type()) // вывести тип
{
case tmanager: cout << ". Тип: Менеджер"; break;
case tscientist: cout << ". Тип: Ученый"; break;
case tlaborer: cout << ". Тип: Рабочий"; break;
default: cout << ". Неизвестный тип";
}
arrap[j]->putdata(); // Вывод данных
cout << endl;
}
}
Получается программа хочет выполнить обращение по уже не существующему адресу табл. вирт функций. Не существующий т.к при перезапуске адреса меняются ?!
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.