![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 29.01.2009
Сообщений: 22
|
![]()
Не много истории:
В общем так...я написал программу которая создает файл и записывает туда структуру, копирнул это структуру в программу которая должна считывать этот файл и написал код для считывания(ниже приведу пример чтения и записи). Трасером я смог определить, что данные из файла считываются и считываются верно, но! после того как процедура считывания заканчивает свою работу и возвращается в процедуру которая вызвала ее возникает ошибка "чтения/записи в защищенную зону" и еще там было написано что это часто свидетельствует о поврежденной памяти (не думаю что такое возможно сразу на двух компах и то что память цела есть еще одно подтверждение, но об этом позже). Долго ли коротко ли, но мучения мои сегодня принесли первые плоды (я вставил код записи и чтения в процедуру обрабатывающую клик мышки и все заработало без ошибок), получив такой результат я был крайне удивлен, но позже меня удивило еще больше ТО! Что если код ЗАПИСИ и ЧТЕНИЕ из файла лежит в одной программе то все выполняется БЕЗ ОШИБОК даже если в последствии код записи удалить файл будет читаться и читаться без проблем! Но если файл создаю в одной программе, а читаю в другой то вылазиет эта дибильная ошибка. Вот код записи файла: //---------------------------------------- using namespace std; struct licfile { string name; float licnum; int sec; }; int _tmain(int argc, _TCHAR* argv[]) { licfile lic; float id; float num = 1679; cout << "Write name: "; cin >> lic.name; cout << endl; cout << "Write id: "; cin >> id; cout << endl; lic.licnum = id*num; cout << "Write sec(0 - unlim): "; cin >> lic.sec; cout << endl; FILE *file; file = fopen("lic.k", "wb"); fwrite(&lic, sizeof(licfile), 1, file); fclose(file); return 0; } //---------------------------------------- Вот код чтения: //---------------------------------------- // ................................... ................................... .... struct licfile { std::string name; float licnumber; int sec; }; // ................................... ................................... .... public ref class Form1 : public System::Windows::Forms::Form { public: Int16 verify(int id, licfile *license) { FILE * file; licfile lic; file = fopen("lic.k", "rb"); fseek(file, 0L, SEEK_SET); fread(&lic, sizeof(licfile), 1, file); fclose(file); return 1; } // ................................... ................................... .... //---------------------------------------- Это что ж такое получается...я могу прочитать только то что создал а все остальное нет? Помоему это как-то не правильно. Я допускаю что это как-то связано с платформой *.NET так как так прога которая записывает написана в обычной консольке, а которая считывает это уже графика с использованием 4ого Framework'a, может бы он как-то иначе файл обрабатывает файл из-за этого? Во вложении изображение вылезающей ошибки. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,091
|
![]()
string - не POD-класс. нельзя его так просто массивом байт писать в файл/читать из файла. Меняйте чтение/запись в файл.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Чтение из типизированного файла с последней записи и до первой | vmilyoshin | Помощь студентам | 7 | 28.04.2010 15:34 |
Ошибка ввода записи. Паскаль | Базиля | Помощь студентам | 10 | 10.01.2010 21:53 |
Ошибка записи в файл | nisoldatov | Софт | 2 | 31.03.2009 02:24 |
Ошибка отложеной записи | Rio309 | Компьютерное железо | 4 | 02.11.2008 18:24 |
Вход на страницу защищенную паролем, и взятие данных. | Vladimir K. | Работа с сетью в Delphi | 25 | 02.01.2008 13:44 |