Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2010, 14:03   #1
mibin
Пользователь
 
Регистрация: 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, может бы он как-то иначе файл обрабатывает файл из-за этого?

Во вложении изображение вылезающей ошибки.
Изображения
Тип файла: jpg error.JPG (66.9 Кб, 115 просмотров)
mibin вне форума Ответить с цитированием
Старый 20.10.2010, 14:17   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,091
По умолчанию

string - не POD-класс. нельзя его так просто массивом байт писать в файл/читать из файла. Меняйте чтение/запись в файл.
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение из типизированного файла с последней записи и до первой 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